Problemas para retornar objeto de um Managed Bean com escopo de sessão

E então pessoal, cá estou eu novamente com mais dúvidas.

Criei um Dao que tem a função de salvar dados em duas tabelas. O problema é que preciso recuperar os dados que foram armazenados na sessão dentro deste Dao. O que estou querendo dizer é que preciso recuperar um objeto, na verdade, um atributo deste objeto que foi armazenado ao usuário iniciar a sessão.

Quando tento retomar o objeto através desta linha de comando:

Dá uma exceção de que o objeto não foi encontrado JavaNullPointException

Eis a parte do código do DAO

[code]
//método para Salvar
public void salvar(ParametroAvaliacao parametros,Avaliacao avaliacao) throws DAOException, SQLException{

	int avaliacaoId;
	PreparedStatement ps = null;
	Connection conn = null;
	Professor prof = new Professor();
	
	//DADOS DE AVALIACAO
	
	if (avaliacao == null)
	throw new DAOException("O valor passado não pode ser nulo");
	
	try {
		
		//RECUPERANDO O OBJETO DA SESSÃO			  
		
		prof = (Professor) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("usuario");
		
		
		//INSERINDO VALORES PARA A TABELA AVALIAÇÃO
		String SQL01 = "insert into avaliacao (avaliacaoid,professorid,descricao) values (0,?,?)";
		conn = this.conn;
		ps = conn.prepareStatement(SQL01);
		ps.setInt(1, prof.getId());//NESTA LINHA DÁ ERRO DIZENDO QUE O OBJETO É NULO			  
		ps.setString(2, avaliacao.getDescricao());
		ps.executeUpdate();[/code]

SE PUDEREM ME AJUDAR

Não está inserindo o objeto na sessão…

Onde vc está enviando ele para a sessão?

[quote=Z]Não está inserindo o objeto na sessão…

Onde vc está enviando ele para a sessão?[/quote]

Quando o usuário entra na seção

[code]package br.com.vteste.validadores;

import java.util.List;
import br.com.vteste.dao.DAOException;
import br.com.vteste.dao.UsuarioDaoLogin;
import br.com.vteste.modelos.Aluno;
import br.com.vteste.modelos.Professor;
import br.com.vteste.modelos.Usuario;

public class ControladorValidaLogin {

private Usuario usuario;
private UsuarioDaoLogin dao;
private String paginaInicial = "";
List<Aluno> listaAlunos;
List<Professor> listaProfessores;
private boolean usuarioNaoEncontrado;



public ControladorValidaLogin(){
	
	usuario = new Usuario();
}



public String validarLogin(){
	
		paginaInicial = validarAluno();
		
		System.out.println(paginaInicial);			
		
		return paginaInicial;		
	}


private String validarAluno() {
	String pagina = "";
	int i=0;
	//LISTA DE ALUNOS
	try {
		dao = new UsuarioDaoLogin();
		listaAlunos = dao.obterListaAlunos();
	} catch (DAOException e) {
		e.printStackTrace();
	}
	
			
	Aluno aluno = (Aluno) listaAlunos.get(i);
	System.out.println(this.usuario.getNome());
	
	
	if((this.usuario.getUsuario().trim().equalsIgnoreCase(aluno.getUsuario()))&&(this.usuario.getSenha().trim().equalsIgnoreCase(aluno.getSenha()))){
		
                    //AQUI O OBJETO É ENVIADO A SEÇÃO LOGO APÓS A VALIDAÇÃO DO USUÁRIO
		this.usuario = aluno;
		System.out.println("Aluno Validado!!");
		pagina = "/pages/paginasIniciais/paginaInicialAluno.jsf";	
		
	}else{
		for(i = 1; i < listaAlunos.size();i++){
			aluno = (Aluno) listaAlunos.get(i);
			if((this.usuario.getUsuario().trim().equalsIgnoreCase(aluno.getUsuario()))&&(this.usuario.getSenha().trim().equalsIgnoreCase(aluno.getSenha()))){
				
				this.usuario = aluno;
				System.out.println("Aluno Validado!!");
				pagina = "/pages/paginasIniciais/paginaInicialAluno.jsf";
				break;
			}
		}
		
	}		
	
	return pagina;						
}

[/code]

Pegue o mapa da sessão

FacesContext.getCurrentInstance().getExternalContext().getSessionMap()

e mande imprimir os valores.

Com certeza seu o “ControladorValidaLogin” está na sessão (pressupondo que está mapeado no faces-config). O mesmo não posso dizer de “Usuario” (não vi seu faces-config).

[quote=Z]Pegue o mapa da sessão

FacesContext.getCurrentInstance().getExternalContext().getSessionMap()

e mande imprimir os valores.

Com certeza seu o “ControladorValidaLogin” está na sessão (pressupondo que está mapeado no faces-config). O mesmo não posso dizer de “Usuario” (não vi seu faces-config).[/quote]

Z,

Então no código abaixo

usuario se refere ao nome que dei ao Managed Bean quando o mapeio?

Olha o código do faces-config

<managed-bean> <managed-bean-name>validaLogin</managed-bean-name> <managed-bean-class>br.com.vteste.validadores.ControladorValidaLogin</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean>

Deveria ser,

É isso?

Deveria ser,

ControladorValidaLogin validaLogin = (ControladorValidaLogin) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("validaLogin"); prof = validaLogin.getUsuario();

É isso?[/quote]

[quote=Z]Deveria ser,

ControladorValidaLogin validaLogin = (ControladorValidaLogin) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("validaLogin"); prof = validaLogin.getUsuario();

É isso?[/quote][/quote]

Valeu Z,

Finalmente deu certo e está rodando.

Falow cara