De nuevo mostrar en campo text segun select

He hecho un pequeño avance con el que no sé si podrás darme un último empujón :)
Dentro de la página jsp he escrito el siguiente código java
Como ves, en la lista consigo tener todas las carteras que posee el usuario en cuestión, hago de ella un array, y ya soy capaz de mostrar por salida estándar la entidad gestora que corresponde a cada cartera. Esos son los datos que yo requería de la sesión.
Ahora necesito que la entidad gestora mostrada cambie dinámicamente en el formulario
En función de la cartera seleccionada, para lo cual necesito javascript, y mi pregunta es:
¿Cómo accedo a ese array llamado "array" desde javascript?, o a ese tampoco puedo acceder como no podía a la sesión! De conseguirlo, sería simplemente poner en javascript:
var index = document.admonCarterasForm.idCart.selectedIndex;
document.admonCarterasForm.entGest.value = array[index]; (o document.array[index], o lo que sea!)
¿Puedo hacer lo que te digo? ¿Cómo?

1 respuesta

Respuesta
1
No enviaste el código, así que no se que me estas hablando, por favor mandame el código, debes tener cudado cuando copias y pegas coneste nuevo editor porque para pegar texto ahora tienes que hacerlo desde otra ventana nueva que se abre. Posiblemente eso fue lo que te paso.
Ahí va el código
A ver ahora!
// Código con el que obtenemos y almacenamos la entidad gestora para cada cartera
session = request.getSession(false);
if (session == null)
throw new RuntimeException("La sesión ha expirado");
UsuarioContainer usuarCont = (UsuarioContainer) session.getAttribute("usuarioContainer");
List carteras = usuarCont.getCartGlob().getCarteras();
Object[] array = carteras.toArray();
for (int i = 0; i < array.length; i++) {
CarteraVO cart = (CarteraVO) array;
System.out.println("La cartera " + cart.getIdCartera() + " la gestiona " + cart.getEntGest());
}
Es código java dentro de la jsp
Este tipo de "accesos" desde JSP hacia Javascript o viceversa no son más que trucos fáciles que se dominan entendiendo el contexto en que te encuentras. Por ejemplo si quiero colocar el valor de una variable Java en una de Javascript tengo que hacer lo siguiente:
function miFuncion (){
var y;
//ahora pasamos el valor de x en y
y =
alert('el valor de y es: '+y);
}
--------------------------
// Otra forma de hacer esto mismo es imprimiendo el código Javascript desde el contexto JSP, así:
---------------
Ahora solo falta aplicar eso a tu programa, lo que te recomiendo es que tu array de carteras lo pases a javascript, es decir que todas las posiciones o datos de tu array de carteras sean pasados a otro array de javascript desde el contexto JSP para que de esa forma puedas manejar todo desde Javascript para cambiar dinámicamente tu formulario, te muestro un ejemplo de como pasar tu array Java a uno Javascript, para evitar confusiones deberías cambiar el nombre a tu array de carteras, yo lo cambie por arrayCarteras:
UsuarioContainer usuarCont = (UsuarioContainer) session.getAttribute("usuarioContainer");
List carteras = usuarCont.getCartGlob().getCarteras();
Object[] arrayCarteras = carteras.toArray();
// ahora vamos a escribir codigo Javascript desde el contexto JSP para crear un array en javascript
out.println("var arrayCarterasJS = new Array();");
for (int i = 0; i < arrayCarteras.length; i++) {
CarteraVO cart = (CarteraVO) arrayCarteras;
// ahora vamos a escribir codigo Javascript desde el contexto JSP para llenar el array de javascript
out.println("arrayCarterasJS["+i+"] = " + cart.getIdCartera());
}
---------------
De esta forma ya creamos un array llamado arrayCarterasJS con todas las carteras del usuario en session que podemos usar después para actualizar el formulario. Ahora si ya puedes hacer esto en el onChange() de tu combobox:
var index = document.admonCarterasForm.idCart.selectedIndex;
document.admonCarterasForm.entGest.value = arrayCarterasJS[index];
Espero que me hayas entendido o más bien que me haya explicado bien, ojala te sirva, solo tendrías que adaptar bien los nombres de las variables y algunos detalles que tu sabrás. Cualquier pregunta que tengas no dudes en consultarme y por favor no olvides finalizar la pregunta.
Me ha llegado todo menos el código que corresponde a lo siguiente:
// Otra forma de hacer esto mismo es imprimiendo el código Javascript desde el contexto JSP, así
¿?
Que vaina con este nuevo editor! Me esta volviendo loco... voy a tener que mandarte esto por email, dime donde puedo mandártelo
Aleluya! Me ha salido todo perfecto.
Reconozco que te ha costado dar con ello a pesar de que la solución era muy sencilla, no para mí que de esto no tenía ni idea, pero sí para ti (la solución no ha consistido en código complejo, ni en el uso o aprendizaje por mi parte de algún otro tipo de "técnica" añadida...), pero claro!, por muy sencilla que pueda ser una solución... si no te explican
bien el problema desde el principio... Me ha costado varias aclaraciones hacerme entender, seguramente no estuve del todo fino con mis explicaciones, pero al final lo he logrado y has podido sacarme de este aprieto :)
Ya sé que cuando el código no se compila pues puede haber detalles de los que uno no se percate, pero te voy decir esto para que lo tengas en cuenta por si a alguien más tienes que pasarle código similar. En...
// ahora vamos a escribir codigo Javascript desde el contexto JSP para llenar el array de javascript
out.println("arrayCarterasJS["+i+"] = " + cart.getIdCartera());
...faltaban las comillas para el string y el punto y coma final, sobre todo lo primero ya
que era un literal :p
out.println("arrayCarterasJS["+i+"] = \"" + cart.getIdCartera() + "\";");
Una última cosa. Sigo interesado en que me mandes el código que no he podido visualizar. Mi correo es [email protected]
Te agradezco un montón tu ayuda. Muchas gracias y saludos de... Juan Pablo (mejor que
juanper1, je je)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas