mostre a parte do código que você instancia e insere a lista na sessão.
dmribeiro
packagecontrole;importjava.io.IOException;importjava.util.ArrayList;importjava.util.List;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;importBo.PizzasAdmBO;importTo.Ped_Item;importTo.Pizzas;importTo.Produtos;publicclassControlaPedido_UserextendsHttpServlet{privatestaticfinallongserialVersionUID=1L;publicProdutosproduto;publicPizzaspizzas;publicList<Pizzas>pizz_lista;publicControlaPedido_User()throwsException{produto=newProdutos();pizzas=newPizzas();pizz_lista=newArrayList<Pizzas>();}publicList<Pizzas>getPizz_lista(){returnpizz_lista;}publicvoidsetPizz_lista(List<Pizzas>pizz_lista){this.pizz_lista=pizz_lista;}publicProdutosgetProduto(){returnproduto;}publicvoidsetProduto(Produtosproduto){this.produto=produto;}publicPizzasgetPizzas(){returnpizzas;}publicvoidsetPizzas(Pizzaspizzas){this.pizzas=pizzas;}protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{HttpSessionsession=request.getSession();//List<Pizzas> ppzz = new ArrayList<Pizzas>(); try{if(request.getParameter("acao").equals("carrinho")&&session.getAttribute("login")!=null){pizzas.setId(Long.parseLong(request.getParameter("id")));pizzas.setNome(request.getParameter("nome"));pizzas.setIgredientes(request.getParameter("descricao"));pizzas.setPreco(Float.parseFloat(request.getParameter("preco")));pizzas.setImagem(request.getParameter("imagem"));pizz_lista.add(pizzas);System.out.println("listas "+pizz_lista.size());session.setAttribute("pedido_pizza",pizz_lista);response.sendRedirect("Pedido_User/Ped_Carrinho.jsp");}else{System.out.println("usuario não logado");response.sendRedirect("menus_nao_logado.jsp");}}catch(Exceptione){e.printStackTrace();}}protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{response.setContentType("text/html");if(request.getParameter("acao").equals("carrinho")){response.sendRedirect("Pedido/pedidoCad.jsp");}}}
fabiocortolan
Não vi nada de “pedido_produtos”, apenas “pedido_pizza”, não está errado?
List<Produtos>pz=(List<Produtos>)request.getAttribute("pedido_produtos");// Aqui não deveria ser "pedido_pizza"session.setAttribute("pedido_pizza",pizz_lista);// Ou aqui não deveria ser "pedido_produtos"?
dmribeiro
Falta de atenção minha, colei aqui o código errado, o certo neste caso é pedido_pizza.
Assim, quando recupero ele na JSP eu não consigo fazer o Cast do objeto retornado da session para List.
fabiocortolan
Não consigo verificar o problema, mas vc já tentou usar JSTL para percorrer essa lista de objetos? Ficaria bem mais simples e com o código mais legível.
Aqui vai um exemplo:
Dá uma pesquisada em JSTL, é bem simples e melhor q usar scriptlet no seu HTML!
douglas_vidotto
Acredito que seja por que você esteja colocando o pedido_pizza, ou pedido_produto na sessão. Porém na tela você está pegando da requisição.
dmribeiro
Obrigado pela dica fabiocortolan, eu já conheço jstl e realmente fica bem melhor, vou fazer a alteração.
douglas_vidotto, tentei pegar da session na pagina JSP mas tbm não consegui, ele da problema de Cast.
Com o código que postei acima consigo visualizar os atributos do objeto que me é retornado, mas quando executo recebo uma exception falando que a lista esta nula, ou seja, ele não faz o Cast de object para list.
Mas valeu pela atenção galera, eu estou utilizando sem setar na sessão mesmo, estou trabalhando com uma lista publica para resolver provisoriamente meu problema.
douglas_vidotto
Huum…então dmribeiro. Você está usando o método sendRedirect. Ao fazer isso você devolve uma resposta ao usuário e ele depois faz uma outra requisição. Por isso os atributos de requisição se perdem e portanto a lista volta com valores nulos. Tenta usar um RequestDispatcher e veja se funciona.