Session.getAttribute(

Preciso de ajuda !!!
Não estou conseguindo pegar minha session quando adiciono o segundo item .
Estou fazendo um carrinho de compra

meu codigo

PedidoLente lente = new PedidoLente(esfericoOd,esfericoOe,
cilindricoOd,cilindricoOe,addOd,addOe,baseOd,
baseOe,tpProduto,fabricante,material,marca,cor,
observacao,dataPed,os,status,dtPrevista,tipoDig,cliente,
digitou,totalOd,totalOe,diame,eixoOd,eixoOe,diametroTot,
ta,md,dnpOd,dnpOe,tparmacao,cnpj,montSn,alturaOd,
alturaOe,tratamento,sr_deleted,agrupamento,st1,st2,st3,st4,st5,tparma);

        List<PedidoLente> carrinho ;
               
        carrinho = new ArrayList<PedidoLente>();
        HttpSession session = request.getSession();
        carrinho.add(lente);            
        PedidoLente ped = (PedidoLente)session.getAttribute("carrinho");
        carrinho.add(ped);
        session.setAttribute("carrinho", carrinho);
        
        RequestDispatcher rd = request.getRequestDispatcher("pronta_1.jsp");
        rd.forward(request, response);

Olá Leandro, olha encontrei algumas coisas estranhas no código…

Aqui voce pega um objeto de sessao que voce diz explicitamente que é uma instancia de PedidoLente

PedidoLente ped = (PedidoLente)session.getAttribute("carrinho"); 

Aqui voce substitui o mesmo objeto de sessao por um que é uma instancia de ArrayList

session.setAttribute("carrinho", carrinho);

Ola obrigado !!!

Mas como na primeira passada do programa eu preciso criar a Session (“carrinho”)
session.setAttribute(“carrinho”, carrinho);

e na segunda eu preciso pegar o valor dessa Session
PedidoLente ped = (PedidoLente)session.getAttribute(“carrinho”);

e acrescentar o outro produto .
carrinho.add(ped);

Se o que deve ficar na sessão é o carrinho, então tem que manipular somento o ArrayList.

List<PedidoLente> carrinho  = (List<PedidoLente>)session.getAttribute("carrinho"); 


PedidoLente ped = // ALGUMA FORMA DE OBTER ESSE OBJETO

//ATRIBUI O OBJETO AO LIST DA SESSAO
carrinho.add(ped);

OBS: Quando voce alterar o valor do objeto que voce pegou da sessao, não precisa fazer uma nova chamada a session.setAttribute, o objeto fica em memoria

jvlouvem

o problema esta .
List carrinho = (List)session.getAttribute(“carrinho”);

esta me retornando sempre null …

Aew !!
Vai retornar null na primeira vez mesmo… porque não tem nada na session…
você precisa fazer um if para verificar se a session carrinho está null caso esteja cria
uma list adicione o produto e mande para a session…

FLW ^^

Segue codigo inteiro , pois estou tomando um BOXE !!!

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package desis.ebpo.servlet;

import desis.ebpo.modelo.PedidoLente;
import java.io.*;
import java.net.*;

import java.util.ArrayList;
import java.util.List;
import javax.servlet.*;
import javax.servlet.http.*;

/**
 *
 * @author Administrador
 */
public class testecarrinho extends HttpServlet {
   
    /** 
    * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
    * @param request servlet request
    * @param response servlet response
    */
    protected void salvarCarrinho(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        

            String marca = request.getParameter("marca");
            String esfericoOd = request.getParameter("esfericoOd");
            String esfericoOe = request.getParameter("esfericoOe");
            String cilindricoOd = request.getParameter("cilindricoOd");
            String cilindricoOe = request.getParameter("cilindricoOe");
            float addOd = 0;
            float addOe = 0;
            String baseOd = request.getParameter("baseOd");
            String baseOe = request.getParameter("baseOe");
            String cor = request.getParameter("cor");
            String diametro = request.getParameter("diametro");
            int diame = Integer.valueOf(diametro);
            String tpProduto = "";
            String fabricante = "";
            String material = "";
            String observacao = "";
            String dataPed = "";
            String  os = "";
            String status = "";
            String dtPrevista = "";
            String tipoDig = "";                                
            String cliente = "";
            String digitou = "";
            int totalOd = 0 ;
            int totalOe = 0 ;
            String eixoOd = "";
            String eixoOe = "";
            String diametroTot = "";
            int ta = 0;
            int md = 0;
            int dnpOd = 0;
            int dnpOe = 0;
            String tratamento = "";
            String tparmacao = "";
            String cnpj = "";
            String montSn = "";
            int alturaOd = 0;
            int alturaOe = 0;
            String sr_deleted = "";
            String agrupamento = "vai";
            String st1 = "";
            String st2 = "";
            String st3 = "";
            String st4 = "";
            String st5 = "";
            String tparma = "";
                        
            PedidoLente lente = new PedidoLente(esfericoOd,esfericoOe,
                           cilindricoOd,cilindricoOe,addOd,addOe,baseOd,
                           baseOe,tpProduto,fabricante,material,marca,cor,
                           observacao,dataPed,os,status,dtPrevista,tipoDig,cliente,
                           digitou,totalOd,totalOe,diame,eixoOd,eixoOe,diametroTot,
                           ta,md,dnpOd,dnpOe,tparmacao,cnpj,montSn,alturaOd,
                           alturaOe,tratamento,sr_deleted,agrupamento,st1,st2,st3,st4,st5,tparma);
            
            HttpSession session = request.getSession();

            List<PedidoLente> carrinho  = (List<PedidoLente>)session.getAttribute("carrinho");
           
            if (carrinho.equals("null"))
            {
            
                carrinho = new ArrayList<PedidoLente>();
            }
            carrinho.add(lente);
            
             session.setAttribute("carrinho", carrinho);

        try {                
            RequestDispatcher rd = request.getRequestDispatcher("pronta_1.jsp");
            rd.forward(request, response);
            
        } finally { 
            out.close();
        }
    } 

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        PrintWriter out = response.getWriter();
       String acao = request.getParameter("acao");
               
       
        if(acao.equals("salvar")) {
            salvarCarrinho(request, response);
        }
       
    }
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        doPost(request, response);
    }
}

aqui:

  if (carrinho.equals("null"))  

tenta

  if (carrinho.equals(null))  

^^

A comparação com null deve ser direta

Em vez de:

if (carrinho.equals("null"))

Coloque

if (carrinho == null)

Procure criar a sessao somente se ela nao existir, então coloque session.setAttribute(“carrinho”, carrinho); dentro deste if acima

Obrigado jvlouvem vlwww agora deu certo e RDGMS (ja que vc me ensinou java depois te ensino a jogar snokker pq vc é ruim de+)

FLwww abraços