Foros del Web » Programación para mayores de 30 ;) » Java »

Java->JSP->¿Como obtengo una objeto guardado en una variable de sesión?

Estas en el tema de Java->JSP->¿Como obtengo una objeto guardado en una variable de sesión? en el foro de Java en Foros del Web. Hey... tengo un problema con JSP que me esta volviendo loco. Ayúdenme por favor.. En resumen desde un formulario envío tres variables name, cantidad y ...
  #1 (permalink)  
Antiguo 05/01/2011, 02:21
 
Fecha de Ingreso: enero-2011
Ubicación: Ciudad de México
Mensajes: 2
Antigüedad: 13 años, 3 meses
Puntos: 0
Pregunta Java->JSP->¿Como obtengo una objeto guardado en una variable de sesión?

Hey... tengo un problema con JSP que me esta volviendo loco. Ayúdenme por favor..

En resumen desde un formulario envío tres variables name, cantidad y precio luego cada vez que ese envian me gustaría mantener cada una de las variables enviadas en una variable de sesión (Exacto un carro de compras).

Para esto decidi guardar una lista genérica en un la variable de sessión la lista contiene un conjunto de objetos de tipo producto guarda perfectamente pero el momento que intento recorre la lista obtenida de la variable de sesión me aparece errores muy extraños.

Pongo el código y luego el error...

Código:
<%@ page contentType="text/html; charset=utf-8" language="java"  import="java.util.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Respuesta jsp</title>
</head>
<body>
	<%
	class Producto{
		public String nombre;
		public Double precio;
		public Integer cantidad;
	}
	HttpSession sesion=request.getSession(true);
	Producto p=new Producto();
	p.nombre=request.getParameter("name");
	p.precio=Double.parseDouble(request.getParameter("precio"));
	p.cantidad=Integer.parseInt(request.getParameter("cantidad"));
	
	List<Producto> lista = new ArrayList<Producto>();
	if(session.getAttribute("lista")!=null){
		lista=(List<Producto>)session.getAttribute("lista");
	}
	lista.add(p);
	session.setAttribute("lista",lista);
	
	Iterator<Producto> iter = lista.iterator();
	while (iter.hasNext()){
		Producto producto=iter.next(); //El error es en esta linea...
		out.println(producto.nombre);
	}
	%>
</body>
</html>
Bien el error dice lo siguiente:

org.apache.jasper.JasperException: Exception in JSP: /addcar.jsp:32

30: Iterator<Producto> iter = lista.iterator();
31: while (iter.hasNext()){
32: Producto producto=iter.next();
33: out.println(producto.nombre);
34: }

Causa raíz

java.lang.ClassCastException: org.apache.jsp.addcar_jsp$1Producto cannot be cast to org.apache.jsp.addcar_jsp$1Producto

Ya probé haciendo casting pero nada... Alguien ayúdeme es urgente por favor...

Última edición por mixcoatl; 05/01/2011 a las 02:23 Razón: Faltas de ortografía.
  #2 (permalink)  
Antiguo 05/01/2011, 03:55
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola mixcoatl. Bienvenido al foro.

Muevo tu tema al foro de Java desde Web general.

Saludos,
  #3 (permalink)  
Antiguo 05/01/2011, 05:58
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: Java->JSP->¿Como obtengo una objeto guardado en una variable de sesión?

En general

ClaseObjeto tuObjeto = (ClaseObjeto) session.getAttribute("nombreAtributoObjetoSesion") ;
// Deberias controlar si viene null crear un objeto nuevo para evitar riesgo de nullpointer al interactuar con el objeto.

Edito... tienes un problema de casteo usando generics. Igual es un bug o no. Aunque no me manejo con generics debes tener en cuenta que al recuperar el atributo solo lo reconoce como un objeto, sin especificar clases, de ahí que si no especificas lo que es, encuentra problemas a la hora de realizar el casteo.

Lo primero que haría es definir primero la lista como recogida del session y luego, si fuese null, crearla nueva (igual eso lo está liando).

Si no funciona, manteniendo la estructura descrita, habría que entrar en que lista es una clase que dentro puede contener cualquier clase de objetos. Con lo cual probaría a castear una lista genérica, sin indicarle el tipo de objeto inicialmente, y luego cuando quieras extraer los objetos de la lista para trabajar con ellos hacer el cast al objeto en ese momento.

Iterator iter = lista.Iterator();
while(iter.hasNext()) {
Producto nextProducto = (Producto) iter.next();
//etc
}

Última edición por Fuzzylog; 05/01/2011 a las 06:07
  #4 (permalink)  
Antiguo 06/01/2011, 00:53
 
Fecha de Ingreso: enero-2011
Ubicación: Ciudad de México
Mensajes: 2
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Java->JSP->¿Como obtengo una objeto guardado en una variable de sesión?

Cita:
Iniciado por Fuzzylog Ver Mensaje
En general

ClaseObjeto tuObjeto = (ClaseObjeto) session.getAttribute("nombreAtributoObjetoSesion") ;
// Deberias controlar si viene null crear un objeto nuevo para evitar riesgo de nullpointer al interactuar con el objeto.

Edito... tienes un problema de casteo usando generics. Igual es un bug o no. Aunque no me manejo con generics debes tener en cuenta que al recuperar el atributo solo lo reconoce como un objeto, sin especificar clases, de ahí que si no especificas lo que es, encuentra problemas a la hora de realizar el casteo.

Lo primero que haría es definir primero la lista como recogida del session y luego, si fuese null, crearla nueva (igual eso lo está liando).

Si no funciona, manteniendo la estructura descrita, habría que entrar en que lista es una clase que dentro puede contener cualquier clase de objetos. Con lo cual probaría a castear una lista genérica, sin indicarle el tipo de objeto inicialmente, y luego cuando quieras extraer los objetos de la lista para trabajar con ellos hacer el cast al objeto en ese momento.

Iterator iter = lista.Iterator();
while(iter.hasNext()) {
Producto nextProducto = (Producto) iter.next();
//etc
}
Gracias por tus observaciones... y si, si la lista no existe, se crea nueva y respecto al casting ya lo intente pero el error continua...
  #5 (permalink)  
Antiguo 07/01/2011, 02:27
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: Java->JSP->¿Como obtengo una objeto guardado en una variable de sesión?

Vamos a intentar algo nuevo...

Intenta obtener el primer producto de la lista de esta manera.

Producto p = (Producto) lista.get(0);

Si te funciona, ya verás tú la forma de implementar la obtención del resto. Un saludo y suerte.
  #6 (permalink)  
Antiguo 21/01/2011, 15:37
Avatar de valdo_kof  
Fecha de Ingreso: noviembre-2009
Ubicación: San Juan del Rio, Qro
Mensajes: 192
Antigüedad: 14 años, 5 meses
Puntos: 16
Respuesta: Java->JSP->¿Como obtengo una objeto guardado en una variable de sesión?

pues no se si te sirva yo creo mis variables de session de esta forma

session.setAttribute( "usuario", us ); en la cual usuario es mi nombre de mi variable de session y us el valor q se le va a otorgar

y las recupero asi

nombre=(String)session.getAttribute( "usuario" );

y pues si quieres hacer un carrito de compras pues yo hice uno en php en la cual ocupaba una tabla para guardar los productos q iba a comprar y otra tabla para cuando ya aceptaba la compra

y asi evitas tener muchas variables de sesion ya q las tablas guardan el valor de mi variable de sesion del usuario q ingresa a hacer el pedido

si te sirve de algo aqui esta un ejemplo en jsp y MyQL http://mygnet.net/manuales/java/carr...p_y_mysql.1868 esta muy facil de entender o mandame un correo a [email protected] y vemos como te puedo ayudar

suerte
  #7 (permalink)  
Antiguo 22/01/2011, 19:32
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: Java->JSP->¿Como obtengo una objeto guardado en una variable de sesión?

Si fuese ese el problema, el programa le diría que encuentra un objeto que no se corresponde con la clase Producto, así que el problema debe ser otro.

De todos modos ya lo debió solucionar porque lleva varios días sin poner nada :)
  #8 (permalink)  
Antiguo 05/03/2011, 10:41
Avatar de hwongu  
Fecha de Ingreso: junio-2008
Ubicación: Trujillo
Mensajes: 93
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: Java->JSP->¿Como obtengo una objeto guardado en una variable de sesión?

Puedes ver como obtener un objeto en la sesion de la siguiente forma

http://www.programandoconcafe.com/20...ompras_26.html

Saludos
__________________
-
Atentamente
Ing. Henry Wong
Ing. de Computaciones y Sistemas

Etiquetas: jsp, objetos, session
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:48.