Primeiramente bom dia a todos.
Estou com um problema já faz alguns dias. Não consegui resolver de jeito nenhum, então vim aqui pedir ajuda a vocês.
É o seguinte, estou fazendo uma aplicação e nela uso um datatable para listar os registros do banco de dados. Estou usando o MySQL. No datatable chama o método do meu manegedbean para listar. Ok funciona beleza, mas depois de algumas listagens ocorreu um erro, que é o seguinte:
"#{PessoaView.todos}' Error reading 'todos' on type meupacote.controller.PessoaController"
Na minha aplicação jsp eu tenho um botão chamado listar. Assim que eu clico nele aparece o datatable. quando clico novamente some o datatable. Ou seja aparece apenas quando o usuário desejar. Fiz isso renderizando os objetos no clique do botão.
Neste meu método do manegedbean eu uso datamodel. Já tentei usar um List<> também mas o erro persiste.
O engraçado que ele lista, trabalho tranquilamente, mas chega um momento que da este erro. Adiante passarei os códigos da minha classe DAO e do meu managedbean. E da minha aplicação jsp tbm.
Método List da classe DAO:
public List<Pessoa> todasPessoas() throws SQLException{
conn = getConnection();
String sql = "SELECT * FROM ger_pessoas";
try{
stm = conn.createStatement();
rs = stm.executeQuery(sql);
List<Pessoa> list = new ArrayList<Pessoa>();
while(rs.next()){
int identificador = rs.getInt("identificador");
String rg = rs.getString("rg");
String municipio = rs.getString("municipio");
String rgorgaoexp = rs.getString("rgorgaoexp");
String rgemissao = rs.getString("rgemissao");
String cpf = rs.getString("cpf");
String sexo = rs.getString("sexo");
String titeleitoral = rs.getString("titeleitoral");
String email = rs.getString("email");
String endereco = rs.getString("endereco");
list.add(new Pessoa(identificador, rg, municipio, rgorgaoexp, rgemissao, cpf, sexo, titeleitoral, email, endereco));
}
return list;
}catch(SQLException ex){
return null;
}
}
Método do manegedbean
public DataModel getTodos() throws Exception{
InterfacePessoa ipes = new PessoaDAO();
model = new ListDataModel(ipes.todasPessoas());
return model;
}
Já tentei usar um List no manegedbean para chamar o método list da classe DAO, mas funciona da mesma maneira:
public List<Pessoa> getAllPessoas() throws Exception{
InterfacePessoa ipes = new PessoaDAO();
return ipes.todasPessoas();
}
Agora da aplicação
<h:panelGrid columns="5" styleClass="tabelaBot">
<h:commandButton value="Cadastrar" rendered="#{PessoaView.botCad}" styleClass="botao" action="#{PessoaView.create}"/>
<h:commandButton value="Alterar" rendered="#{PessoaView.botAlt}" styleClass="botao" action="#{PessoaView.update}"/>
<h:commandButton value="Listar" immediate="true" styleClass="botao" action="#{PessoaView.mudaListar}" />
<a4j:commandButton value="Limpar" styleClass="botao" reRender="painelCadastro" action="#{PessoaView.limpa}"/>
</h:panelGrid>
<br />
<br />
<rich:dataTable id="listaCliente" rowClasses="linha_a, linha_b" styleClass="tabela" headerClass="cabecalho" value="#{PessoaView.todos}" var="item"
rendered="#{PessoaView.listar}" cellpadding="2" cellspacing="0">
<f:facet name="header">
<h:outputText value="Pessoas Cadastradas"/>
</f:facet>
<rich:column>
<f:facet name="header">
<h:outputText value="RG"/>
</f:facet>
<h:outputText value="#{item.rg}"/>
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Municipio"/>
</f:facet>
<h:outputText value="#{item.municipio}"/>
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="CPF"/>
</f:facet>
<h:outputText value="#{item.cpf}"/>
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Sexo"/>
</f:facet>
<h:outputText value="#{item.sexo}"/>
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="E-Mail"/>
</f:facet>
<h:outputText value="#{item.email}"/>
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Operação"/>
</f:facet>
<h:commandLink immediate="true" action="#{PessoaView.editar}">
<h:graphicImage styleClass="link" url="imagens/rtg_rate.gif" title="Alterar"/>
</h:commandLink>
<a4j:commandLink reRender="listaCliente" action="#{PessoaView.excluir}">
<h:graphicImage styleClass="link" url="imagens/bRmv.gif" title="Apagar"/>
</a4j:commandLink>
</rich:column>
</rich:dataTable>
</h:form>
Desde já agradeço pela atenção e paciência.