Session.GetAttribute() retorna null

7 respostas
M

Olá,
Estou tendo problemas para obter um objeto atribuído a uma sessão.
Estou utilizando struts.

Em uma determinada action eu crio uma instância de um objeto e a publico como atributo em uma sessão.

Posteriormente eu tento acessar esse objeto e estou obtendo um ponteiro nulo.

Exemplo:

Em um action …

Cliente cli = new Cliente();
request.getSession().setAttribute(“cliente”, cli);

Posteriormente em outra action eu tento obter o objeto criado.

Cliente cli = (Cliente) request.getSession().getAttribute(“cliente”);

Porém estou obtendo um ponteiro nulo.
Alguém saberia dizer a causa disso?

7 Respostas

Mauricio_Linhares

O navegador está com cookies habilitados? É a mesma instância do navegador?

P

Moacir,
Verifique no seu struts-config.xml como esta configurada a propriedade scope da action

<action path="/logon" type="org.apache.struts.webapp.example.LogonAction" name="logonForm" scope="request" input="/logon.jsp" unknown="false" validate="true" /> </action-mappings>

Mauricio_Linhares

pm:
Moacir,
Verifique no seu struts-config.xml como esta configurada a propriedade scope da action

o “scope” da Action é para o ActionForm relacionado a ela, não para ela.

P

ok…

mauricio…será que pode ser alguma coisa com o timeout da session ??
cookies eu tbem acho que não é… os cookies não são criados e gerenciados do lado do client ?? e a session no lado do server ?

pf… me corrija se eu estiver errado …

P

Moacir ,

na sua jsp existe a tag <%@page session=“false”> ? Acho que ela influencia em alguma coisa …

de uma verificada …

se vc usar request.getSession(true), e o objeto sesion não existir , um novo objeto seesion é criado…

so não sei se a tag acima anula a session do usuario…

M

Os cookies estão habilitados. Não é a mesma instância do navegador não, exemplo:

Eu abro uma janela do navegador. A partir dessa janela eu aciono um comando que cria um objeto, adiciona o mesmo à sessão e abre outra pagina na mesma janela. Dentro dessa pagina eu aciono um novo comando que abre uma nova janela do navegador e apartir dessa nova janela, eu aciono um comando que executa uma action que tenta resgatar o objeto criado anteriormente. Ai o objeto vem nulo.

Eu já tentei imprimir o id da sessão quando vou vincular o objeto à sessão e quanto tento obtelo. Os numeros são os mesmos.

plis
cara ve se isso ajuda:

HttpSession sessao = request.getSession(); //CRIO A MINHA SESSÃO.

String prod = "Mouse";
sessao.setAttribute("produto", prod);//INSIRO UM ITEM LOCALIZADO NA VARIÁVEL "prod" PARA O OBJETO DE SESSÃO "produto";



// AGORA EU RECUPERO ATRIBUTO DA SESSÃO

String produto = sessao.getAttribute("produto").toString();

....

flws...

Criado 13 de junho de 2005
Ultima resposta 21 de jun. de 2012
Respostas 7
Participantes 4