Boa tarde;
No código abaixo, eu tenho 5 classes modelo (uma delas usa os atributos da outra), um DAO que me retorna um list, um bean que serve como controller e a página xhtml que exibe os dados, meu problema é a página xhtml nem abre, dá um null pointer sem apontar a linha.
Edit1: Se eu tirar a lista carregada do construtor do bean, ele funciona o resto do software, por isso eu sei que o problema é ali.
public class Pessoa extends Cidade{
private int id;
private String nome;
//construtor, getters and setters
public class Aluno extends Pessoa {
private int idAluno;
private String instituicao;
private String curso;
private int matriculaAluno;
//construtor, getters and setters
public class Professor extends Pessoa{
private int idProfessor;
private int matricula;
private String lotacao;
//construtor, getters and setters
public class Supervisor extends Pessoa{
private int idSupervisor;
private String formacao;
//construtor, getters and setters
public class Estagio {
private int IdEstagio;
private double chDiaria;
private double chSemanal;
private String datainicio;
private String datafinal;
private String situacao;
private double bolsa_auxilio;
private double bolsa_transporte;
private Aluno aluno;
private Professor professor;
private Supervisor supervisor;
//construtor, getters and setters
MEU DAO QUE TEM O MÉTODO QUE BUSCA NO BANCO E FAZ A LISTA, A QUERY FUNCIONA BEM, EU TESTEI
public List<Estagio> ListarEstagiosAtivos() {
Connection con = Conexao.getConnection();
PreparedStatement stmt = null;
ResultSet rs = null;
List<Estagio> estagio = new ArrayList<>();
try {
stmt = con.prepareStatement("select (select p.nome from pessoa p inner join aluno a on p.id = a.id_pessoa join estagio e on a.id = e.id_aluno) as nomealuno, (select p.nome from pessoa p inner join orientador r on p.id = r.id_pessoa join estagio e on r.id = e.id_orientador) as nomeorientador, (select p.nome from pessoa p inner join supervisor s on p.id = s.id_pessoa join estagio e on s.id = e.id_supervisor) as nomesupervisor,e.inicio as inicio, e.fim as fim, e.bolsa_auxilio as auxilio, e.bolsa_transporte as transporte, e.ch_diaria as diaria, e.ch_semanal as semanal from estagio e");
rs = stmt.executeQuery();
while (rs.next()) {
Estagio e = new Estagio();
e.getAluno().setNome(rs.getString("nomealuno"));
e.getProfessor().setNome(rs.getString("nomeorientador"));
e.getSupervisor().setNome(rs.getString("nomesupervisor"));
e.setBolsa_auxilio(rs.getDouble("auxilio"));
e.setBolsa_transporte(rs.getDouble("transporte"));
e.setChDiaria(rs.getDouble("diaria"));
e.setChSemanal(rs.getDouble("semanal"));
e.setDatainicio(rs.getString("inicio"));
e.setDatafinal(rs.getString("final"));
estagio.add(e);
}
} catch (SQLException ex) {
Logger.getLogger(EstadoDAO.class.getName()).log(Level.SEVERE, null, ex);
} finally {
Conexao.closeConnection(con, stmt, rs);
}
return estagio;
}
MEU BEAN
@ManagedBean(name = "funcionarioMB")
@SessionScoped
public class FuncionarioMB {
private Esta gio estagio;
private List<Estagio> estagiosAtivos;
`private FuncionarioDAO fDAO = new FuncionarioDAO();`
public FuncionarioMB() {
super();
estagio = new Estagio();
estagiosAtivos = fDAO.ListarEstagiosAtivos();
}
}
MINHA TELA:
<h:form id="form" prependId="false">
<p:focus />
<div class="box box-primary">
<div class="box-header with-border">
<p:commandButton action="#" ajax="false" icon="fa fa-file-pdf-o"
value="Exportar" styleClass="btn-primary" />
<br></br> <br></br>
<div class="ui-g ui-fluid">
<p:dataTable var="estagio" value="#{funcionarioMB.estagiosAtivos}">
<div class="ui-g-12">
<p:column headerText="Estagiário">
<h:outputText value="#{estagio.aluno.nome}" />
</p:column>
</div>
<div class="ui-g-12">
<p:column headerText="Orientador">
<h:outputText value="#{estagio.professor.nome}" />
</p:column>
</div>
<div class="ui-g-12">
<p:column headerText="Supervisor">
<h:outputText value="#{estagio.supervisor.nome}" />
</p:column>
</div>
<div class="ui-g-12">
<p:column headerText="CH semanal">
<h:outputText value="#{estagio.chSemanal}" />
</p:column>
</div>
<div class="ui-g-12">
<p:column headerText="CH semanal">
<h:outputText value="#{estagio.chSemanal}" />
</p:column>
</div>
<div class="ui-g-12">
<p:column headerText="Data de início">
<h:outputText value="#{estagio.datainicio}" />
</p:column>
</div>
<div class="ui-g-12">
<p:column headerText="Data de fim">
<h:outputText value="#{estagio.datafinal}" />
</p:column>
</div>
<div class="ui-g-12">
<p:column headerText="Bolsa aux.">
<h:outputText value="#{estagio.bolsa_auxilio}" />
</p:column>
</div>
<div class="ui-g-12">
<p:column headerText="Bolsa transporte">
<h:outputText value="#{estagio.bolsa_transporte}" />
</p:column>
</div>
</p:dataTable>
</div>
</div>
</div>
</h:form>
MEU ERRO