Uma ajuda com Hibernate e Jsf

1 resposta
G

Pessoal,
Eu estou implementando uma pagina jsf com com informação de uma classe Professor, as informação na tabela eu consigo visualizar todos os dados do professor. Mas eu criei um opção de atualizações.
Que utilizar um metodo, que pega as informações da linha que eu quero atualizar, joga as informações em um objeto professor o redereciona para uma página que é a mesma que utilizo para salvar. O problema é quando vai pra essa pagina os campos do endereço não são recuperados, estão em branco. E apareceum error no console do eclipse.

No banco de existe a tabela pessoa, professor e endereço, esse modelo é do tutorial do hibernate 3 que tem na comunidade.

classe Pessoa:
public class Pessoa implements Serializable{
	
	private int id;
	private String nome;
	private String email;
	private String telefone;
	private Endereco endereco;
...
metodos get e set...
classe Professor:
public class Professor extends Pessoa implements Serializable{
	
	private String titulo;
	private Collection turmas;
...
Classe ProfessorControlle
public class ProfessorController {
	private DataModel model;
	private Professor professor;
	private Endereco endereco;
	private EnderecoDao enderecoDao;
	private ProfessorDao professorDao = DaoFactory.getProfessorDao();

	//Metodo responsavel por instanciar objeto	
	public String novoProfessor() {
		professor = new Professor();
		endereco = new Endereco();
		return "nvProfessor";
	}

	//Metodo para Salvar ou Atualizar no BD 	
	public String salvarProfessor() {
		try {
			if (professorDao.recuperar(professor.getId()) == null) {
				professor.setEndereco(endereco);
				endereco.setPessoa(professor);
				professorDao.salvar(professor);
			} else {
				professorDao.atualizar(professor);
			}
			return "slProf";
		} catch (Exception e) {
			e.printStackTrace();
			return "frProf";
		}
	}
	//Recupera todos os professores que estao BD e coloca eu objeto do tipoDataModel
	public DataModel getTodos() {
		try {
			model = new ListDataModel(professorDao.listarTodos());
			return model;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	//Metodo responsalver por pegar um determinada linha em DataModel e colocar num objeto Professor
	public Professor getProfessorFromEditOrDelete() {
		professor = (Professor) model.getRowData();
		return professor;
	}
	
	//Metodo para atualizar dados do professor
	public String editarProfessor() {
		try {
			professor = getProfessorFromEditOrDelete();
			endereco = enderecoDao.recuperar(professor.getId());
			professor.setEndereco(endereco);
			setProfessor(professor);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return "edProf";
	}
...
Pagina jsf:
...
 <h:panelGrid
			columns="2" border="0">
			<h:outputText value="Titulo:" styleClass="rotulos" />
			<h:inputText id="matricula" value="#{profCont.professor.titulo}"
				styleClass="edit" />
			<h:outputText value="Nome:" styleClass="rotulos" />
			<h:inputText id="nome" value="#{profCont.professor.nome}" size="30"
				styleClass="edit" />
			<h:outputText value="E-Mail:" styleClass="rotulos" />
			<h:inputText id="email" value="#{profCont.professor.email}" size="30"
				styleClass="edit" />
			<h:outputText value="Telefone:" styleClass="rotulos" />
			<h:inputText id="telefone" value="#{profCont.professor.telefone}"
				size="11" styleClass="edit" />
			<h:outputText value="Rua:" styleClass="rotulos" />
			<h:inputText id="rua" value="#{profCont.endereco.rua}" size="25"
				styleClass="edit" />
			<h:outputText value="Numero:" styleClass="rotulos" />
			<h:inputText id="numero" value="#{profCont.endereco.numero}" size="3"
				styleClass="edit" />
			<h:outputText value="Bairro:" styleClass="rotulos" />
			<h:inputText id="bairro" value="#{profCont.endereco.bairro}"
				size="15" styleClass="edit" />
			<h:outputText value="Cidade:" styleClass="rotulos" />
			<h:inputText id="cidade" value="#{profCont.endereco.cidade}"
				size="15" styleClass="edit" />
			<h:outputText value="Estado:" styleClass="rotulos" />
			<h:inputText id="estado" value="#{profCont.endereco.estado}"
				size="15" styleClass="edit" />
			<h:outputText value="Complemento:" styleClass="rotulos" />
			<h:inputText id="complemento"
				value="#{profCont.endereco.complemento}" size="25" styleClass="edit" />
			<h:outputText value="Cep:" styleClass="rotulos" />
			<h:inputText id="cep" value="#{profCont.endereco.cep}"
				styleClass="edit" />
</h:panelGrid>...
error que aparece no console:
13:15:43,057 DEBUG TwoPhaseLoad:111 - resolving associations for [model.Endereco#11]
13:15:43,058 DEBUG DefaultLoadEventListener:171 - loading entity: [model.Pessoa#11]
13:15:43,059 DEBUG DefaultLoadEventListener:244 - entity found in session cache
13:15:43,060 DEBUG TwoPhaseLoad:209 - done materializing entity [model.Endereco#11]
13:15:43,061 DEBUG TwoPhaseLoad:111 - resolving associations for [model.Professor#11]
13:15:43,061 DEBUG DefaultLoadEventListener:171 - loading entity: [model.Endereco#11]
13:15:43,062 DEBUG DefaultLoadEventListener:332 - attempting to resolve: [model.Endereco#11]
13:15:43,063 DEBUG DefaultLoadEventListener:349 - resolved object in session cache: [model.Endereco#11]
13:15:43,064 DEBUG LoadContexts:194 - creating collection wrapper:[model.Professor.turmas#11]
13:15:43,064 DEBUG TwoPhaseLoad:209 - done materializing entity [model.Professor#11]
13:15:43,065 DEBUG StatefulPersistenceContext:837 - initializing non-lazy collections
13:15:43,066 DEBUG JDBCContext:237 - after autocommit
13:15:43,066 DEBUG ConnectionManager:404 - aggressively releasing JDBC connection
13:15:43,067 DEBUG ConnectionManager:441 - releasing JDBC connection [ (open PreparedStatements: 0, globally: 0) (open ResultSets: 0, globally: 0)]
13:15:43,069 DEBUG SessionImpl:273 - closing session
13:15:43,069 DEBUG ConnectionManager:375 - connection already null in cleanup : no action
java.lang.NullPointerException
	at managers.ProfessorController.editarProfessor(ProfessorController.java:64)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)

Alguém pode mim ajudar já tou com um bom tempo nesse problema...

1 Resposta

proteus_adi

tem um nullpoint exception na

ProfessorController.java:64

Essa é uma chamada que vem dalguma ação?
parece q vc num tá preenchendo todos os dados de todos os itens…

Num seria um pequeno probleminha de escopo de classe?

Criado 15 de novembro de 2008
Ultima resposta 16 de nov. de 2008
Respostas 1
Participantes 2