Olá a todos. Estou iniciando agora meus estudos com JSF2.2 e PRIMEFACES e após tentar, tentar e tentar e não sair do lugar, resolvi pedir socorro. Tentarei descreve da melhor forma possivel o meu problema, vamos lá:
Através de um formulário eu populo uma tabela no banco e redireciono para uma segunda page que apresenta uma lista em um dataTable, ná ultima coluna destá lista tem um botão “Excluir” que deveria pegar o id destá linha e excluir esse contato do banco. Logo após, seria necessário atualizar o mesmo dataTable.
Segue código presente nas classes:
Pessoa - MODEL
public class Pessoa {
private int id;
private String nome;
private String endereco;
private String numero;
private String cidade;
private String telefone;
private String email;
public Pessoa(){
}
gets e sets...
}
PessoaMB - CONTROLLER
@ManagedBean
@ViewScoped
public class PessoaMB implements Serializable{
public Pessoa pessoa;
public List<Pessoa> listPessoa;
public PessoaDAO pessoaDAO;
FacesMessage alerta;
public PessoaMB() throws ClassNotFoundException{
pessoa = new Pessoa();
listPessoa = new ArrayList<Pessoa>();
pessoaDAO = new PessoaDAO();
}
public Pessoa getPessoa(){
return pessoa;
}
public void setPessoa(Pessoa pessoa){
this.pessoa = pessoa;
}
public List<Pessoa> getListPessoa() throws ClassNotFoundException, SQLException{
return pessoaDAO.getListPessoa();
}
public void setListPessoa(List<Pessoa> listPessoa){
this.listPessoa = listPessoa;
}
public String addPessoa() throws ClassNotFoundException, SQLException{
String resultado = "/sucesso";
boolean validar = pessoaDAO.inserir(pessoa);
if(!validar){
resultado = "/erro";
}
return resultado;
}
public String removePessoa() throws SQLException{
String resultado = "";
boolean validar = pessoaDAO.remover(pessoa);
if(!validar){
resultado = "/erro";
alerta = new FacesMessage("Entrou no método removerPessoa mas não removeu do banco!!!");
FacesContext.getCurrentInstance().addMessage(null, alerta);
}
return resultado;
}
}
Pessoa - DAO
public class PessoaDAO {
private final Conexao conn;
private PreparedStatement ps;
public List<Pessoa> listaPessoa;
public PessoaDAO() throws ClassNotFoundException{
conn = new Conexao();
}
public boolean inserir(Pessoa pessoa) throws ClassNotFoundException, SQLException{
String sql = "INSERT INTO pessoa VALUES(?,?,?,?,?,?,?)";
try {
ps = conn.getConnection().prepareStatement(sql);
ps.setInt(1, 0);
ps.setString(2, pessoa.getNome());
ps.setString(3, pessoa.getEndereco());
ps.setString(4, pessoa.getNumero());
ps.setString(5, pessoa.getCidade());
ps.setString(6, pessoa.getTelefone());
ps.setString(7, pessoa.getEmail());
ps.execute();
} catch (Exception e) {
e.printStackTrace();
}
ps.close();
conn.fecharConexao();
return true;
}
public boolean remover(Pessoa pessoa) throws SQLException{
String sql = "DELETE FROM pessoa WHERE id = ?";
try {
ps = conn.getConnection().prepareStatement(sql);
ps.setInt(1, pessoa.getId());
ps.execute();
} catch (Exception e) {
e.printStackTrace();
}
ps.close();
conn.fecharConexao();
return true;
}
public List<Pessoa> getListPessoa() throws ClassNotFoundException, SQLException{
String sql = "SELECT * FROM pessoa ORDER BY id";
ResultSet rs = null;
listaPessoa = new ArrayList<Pessoa>();
try {
ps = conn.getConnection().prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next()){
Pessoa pessoa = new Pessoa();
pessoa.setId(rs.getInt("id"));
pessoa.setNome(rs.getString("nome"));
pessoa.setEndereco(rs.getString("endereco"));
pessoa.setNumero(rs.getString("numero"));
pessoa.setCidade(rs.getString("cidade"));
pessoa.setTelefone(rs.getString("telefone"));
pessoa.setEmail(rs.getString("email"));
listaPessoa.add(pessoa);
}
} catch (SQLException e) {
e.printStackTrace();
}
return listaPessoa;
}
}
index - VIEW
<h:body>
<h:form id="form">
<h:panelGrid columns="3" id="grid">
<p:outputLabel value="Nome"/>
<p:inputText id="nome" size="20" value="#{pessoaMB.pessoa.nome}" required="true" requiredMessage="Campo Obrigatório"/>
<p:message for="nome"/>
<p:outputLabel value="Endereco" />
<p:inputText id="end" size="20" value="#{pessoaMB.pessoa.endereco}" required="true" requiredMessage="Campo Obrigatório"/>
<p:message for="end"/>
<p:outputLabel value="Numero" />
<p:inputText id="nro" size="20" value="#{pessoaMB.pessoa.numero}" required="true" requiredMessage="Campo Obrigatório"/>
<p:message for="nro"/>
<p:outputLabel value="Cidade" />
<p:inputText id="mun" size="20" value="#{pessoaMB.pessoa.cidade}" required="true" requiredMessage="Campo Obrigatório"/>
<p:message for="mun"/>
<p:outputLabel value="Telefone" />
<p:inputText id="tel" size="20" value="#{pessoaMB.pessoa.telefone}"/>
<p:message for="tel"/>
<p:outputLabel value="Email" />
<p:inputText id="eml" size="20" value="#{pessoaMB.pessoa.email}"/>
<p:message for="eml"/>
<p:commandButton id="btnENVIAR" value="Enviar" type="submit" action="#{pessoaMB.addPessoa}"/>
<p:commandButton id="btnLIMPAR" value="Limpar" type="reset"/>
</h:panelGrid>
</h:form>
</h:body>
sucesso - VIEW
<h:form>
<h:panelGrid>
<p:dataTable id="tablePessoa" value="#{pessoaMB.listPessoa}" var="lista" rows="10" emptyMessage="Sem Registro" paginator="true">
<p:column>
<f:facet name="header">
<h:outputText value="ID"/>
</f:facet>
<h:outputText value="#{lista.id}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="NOME"/>
</f:facet>
<h:outputText value="#{lista.nome}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="ENDERECO"/>
</f:facet>
<h:outputText value="#{lista.endereco}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="NUMERO"/>
</f:facet>
<h:outputText value="#{lista.numero}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="CIDADE"/>
</f:facet>
<h:outputText value="#{lista.cidade}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="TELEFONE"/>
</f:facet>
<h:outputText value="#{lista.telefone}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="EMAIL"/>
</f:facet>
<h:outputText value="#{lista.email}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="ACAO"/>
</f:facet>
<p:commandButton id="btnEXCLUIR" value="Excluir" type="submit" action="#{pessoaMB.removePessoa(lista.id)}" update="tablePessoa"/>
</p:column>
</p:dataTable>
</h:panelGrid>
<h:panelGrid columns="2" id="grid">
<p:column>
<f:facet name="header">
<h:outputText value="ACAO"/>
</f:facet>
<p:commandButton id="btnNOVO" value="Adicionar Novo" type="submit" action="/index.xhtml"/>
</p:column>
</h:panelGrid>
</h:form>
Ps: Qual critica construtiva é bem vinda pois tenho quase certeza que o erro não é por mal conhecimento do framework e sim de lógica e orientação a objetos.