Erro na gravação da sessão [Resolvido]

2 respostas
Lagaffe

Oi Pessoal,

Eu não tenho muita experiencia em java e me ocorreu um erro que não consegui entender. Gostaria de uma ajuda para entender.

Não grava na sessão:

public void defineCRSessao(CentroResultado centroResultado) {
		this.sessaoUsuario.setCentroResultado(this.centroResultadoDao.procura(centroResultado.getId()));
		result.use(logic()).redirectTo(InicioController.class).tela();
	}

Grava na sessão:

public void defineCRSessao(CentroResultado centroResultado) {
		this.sessaoUsuario.setCentroResultado(this.centroResultadoDao.procura(centroResultado.getId()));
		System.out.println("----------------->Centro Resultado: "+this.centroResultadoDao.procura(centroResultado.getId()).getNome());
		result.use(logic()).redirectTo(InicioController.class).tela();
	}

A sessaoUsuario:

@SessionScoped
@Component
public class SessaoUsuario implements Serializable {
   private static final long serialVersionUID = 8386292614990394959L;
   private final HttpSession session;
   public SessaoUsuario(HttpSession session) {
	   this.session = session;
   }
	public CentroResultado getCentroResultado() {
		return (CentroResultado) this.session.getAttribute("centroResultado");
	}
	public void setCentroResultado(CentroResultado centroResultado) {
		this.session.setAttribute("centroResultado", centroResultado);
	}

Obrigado.

2 Respostas

Lucas_Cavalcanti

dependendo do jeito que vc está buscando o objeto do banco, o hibernate só vai fazer o select no banco quando vc chamar algum método do objeto… ele faz isso pra não fazer selects desnecessários…

se vc usa session.load, troque pra session.get e vê se funciona…

e vc não precisa mexer no HttpSession na mão…

vc pode guardar num atributo da classe SessaoUsuario, daí vc consegue acessar ele na jsp via:

${sessaoUsuario.centroResultado}
Lagaffe

Lucas,

Usei o session.get e funcionou. Curioso que é o unico caso onde tive problema com o session.load. Acabo até esqueçendo que o hibernate está funcionando por trás.

Alterei o sessaoUsuario eliminando o HttpSession. Funcionou também.

Na epoca que criei o sessaoUsuario segui a orientação do manual na parte: migrando do vraptor2 para vraptor3.

Obrigado.

Criado 7 de maio de 2010
Ultima resposta 8 de mai. de 2010
Respostas 2
Participantes 2