Bean Temporal

leogendari
13 de Junio del 2005
Tengo una consulta sobre el uso de la session para almacenar variables.

El escenario es el siguiente:

1)Tengo un Action1(A1) q carga los datos desde la BD al formulario Base(FB)
*)Tengo un formulario Base(FB).

2)Dentro del formulario FB tengo un enlace que me lleva al formulario 2 (F2).

3)Tengo un Servlet(S1) q me carga desde la BD las opciones q pueden ser seleccionadas en el F2.

*)El form F2 sirve para agregar items a un dropdown List(combo) en el formulario FB.

4)Luego de presionar el boton grabar en F2 se graban los items seleccionados y me muestra nuevamente el FB con el combo cargado. Esto lo realiza un Servlet (S2).

5)Y luego el Servlet S2 llama al Action1(A1) para que nuevamente carge el Formulario Base(FB).

Tengo problemas con :

Estoy enviando a la session un Bean :
//declarando
BeanZ objBeanZ = new BeanZ();
//agregando valor al bean
objBeanZ.setNumProy(vnumproy);
//enviando a la session
session.setAttribute("BeanTemp",objBeanZ);

Estos tratando de recuperar el dato almacenado en el BeanZ :
//recuperando valor
HttpSession session = request.getSession();
Collection BeanZ=((Collection)session.getAttribute("BeanTemp"));

Esta bien la forma en la que estoy obteniendo el dato del bean BeanZ?

La idea es obtener nuevamente el valor de:
numeroproyecto = objBeanZ.getNumProy();

Como ven la idea es solo almacenar los datos en el Bean Temporal BeanZ y poder recuperar los valores que pueda tener dentro.

Ojala alguien tenga la respuesta.

frantic
13 de Junio del 2005
Hola,

lo que puedo ver en tu código es que almacenas dentro de la sesión un bean con la siguiente instrucción:
session.setAttribute("BeanTemp", onjBeanZ);

Ahora bien a la hora de recuperarla cometes el error de hacer casting a un Collection para obtener el atributo BeanTemp. La sesión lo que hace es "envolver" los onjetos que le envias como Object que es la clase padre de cualquier clase en Java, cuando pides el objeto en la session debes hacerle casting al mismo tipo de objeto con el que fue guardado es decir deberias hacer:
BeanZ bean = (BeanZ) session.getAttirbute("BeanTemp");

Así obtienes nuevamente el objeto bean del que puedes extraer cualquier dato miembro.

Espero que te sirva de ayuda.
Saludos...