Pessoal,
Eu estou implementando uma pagina jsf com
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...
public class Professor extends Pessoa implements Serializable{
private String titulo;
private Collection turmas;
...
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";
}
...
...
<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>...
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...