Eu criei um dataTable segundo o exemplo do site do PrimeFaces. O dataTable está sendo renderizado perfeitamente, porém os dados do BD não aparecem no dataTable.
Debugando a minha função carregarCliente os registros do banco de dados são retornados, só não sei porque não aparece no dataTable.
xhtml:
<h:form id="form">
<p:dataTable var="cliente" value="#{clienteMB.carregarCliente()}" rowKey="#{clienteMB.cliente.id}"
paginator="true" rows="10" selection="#{clienteMB.clienteSelecionado}" selectionMode="single"
filteredValue="#{clienteMB.clientesFiltrados}" id="clientesTable">
<p:ajax event="rowSelect" update=":form:display" oncomplete="PF('clienteDialog').show()" />
<f:facet name="header">Lista de Clientes</f:facet>
<p:column headerText="Id" sortBy="#{clienteMB.cliente.id}" filterBy="#{clienteMB.cliente.id}">
#{clienteMB.cliente.id}
</p:column>
<p:column headerText="Nome" sortBy="#{clienteMB.cliente.nome}" filterBy="#{clienteMB.cliente.nome}">
#{clienteMB.cliente.nome}
</p:column>
<p:column headerText="Fone" sortBy="#{clienteMB.cliente.fone}" filterBy="#{clienteMB.cliente.fone}">
#{clienteMB.cliente.fone}
</p:column>
<p:column headerText="Email" sortBy="#{clienteMB.cliente.email}" filterBy="#{clienteMB.cliente.email}">
#{clienteMB.cliente.email}
</p:column>
</p:dataTable>
<p:dialog header="Cliente Detalhes" widgetVar="clienteDialog" resizable="false"
width="200" showEffect="explode" hideEffect="explode">
<h:panelGrid id="display" columns="2" cellpadding="4">
<h:outputText value="Id:" />
<h:outputText value="#{clienteMB.clienteSelecionado.id}" id="id" />
<h:outputText value="Nome" />
<h:outputText value="#{clienteMB.clienteSelecionado.nome}" id="nome" />
<h:outputText value="Fone" />
<h:outputText value="#{clienteMB.clienteSelecionado.fone}" id="fone" />
<h:outputText value="Email:" />
<h:outputText value="#{clienteMB.clienteSelecionado.email}" id="email" />
</h:panelGrid>
</p:dialog>
</h:form>
ClienteMB:
package br.com.teste.managedbean;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import br.com.teste.ejb.ClienteBean;
import br.com.teste.entidade.Cliente;
@ManagedBean
@ViewScoped
public class ClienteMB {
private Cliente cliente = new Cliente();
private Cliente clienteSelecionado = new Cliente();
private List<Cliente> lstCliente = new ArrayList<Cliente>();
private List<Cliente> clientesFiltrados = new ArrayList<Cliente>();
public String incluirCliente(){
InitialContext ini;
try {
ini = new InitialContext();
ClienteBean clienteBean = (ClienteBean)ini.lookup("java:module/ClienteBean");
return clienteBean.salvar(cliente);
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
public String deletarCliente(){
InitialContext ini;
try {
ini = new InitialContext();
ClienteBean clienteBean = (ClienteBean)ini.lookup("java:module/ClienteBean");
clienteBean.deletar(getClienteSelecionado());
} catch (NamingException e) {
e.printStackTrace();
}
return null;
}
public String atualizarCliente(Cliente cliente){
InitialContext ini;
try {
ini = new InitialContext();
ClienteBean clienteBean = (ClienteBean)ini.lookup("java:module/ClienteBean");
clienteBean.atualizar(cliente);
cliente = new Cliente();
lstCliente = clienteBean.buscarCliente();
} catch (NamingException e) {
e.printStackTrace();
}
return null;
}
public List<Cliente> carregarCliente(){
InitialContext ini;
try {
ini = new InitialContext();
ClienteBean clienteBean = (ClienteBean)ini.lookup("java:module/ClienteBean");
lstCliente = clienteBean.buscarCliente();
} catch (NamingException e) {
e.printStackTrace();
}
return lstCliente;
}
public Cliente getCliente() {
return cliente;
}
public void setCliente(Cliente cliente) {
this.cliente = cliente;
}
public List<Cliente> getLstCliente() {
return lstCliente;
}
public void setLstCliente(List<Cliente> lstCliente) {
this.lstCliente = lstCliente;
}
public Cliente getClienteSelecionado() {
return clienteSelecionado;
}
public void setClienteSelecionado(Cliente clienteSelecionado) {
this.clienteSelecionado = clienteSelecionado;
}
public List<Cliente> getClientesFiltrados() {
return clientesFiltrados;
}
public void setClientesFiltrados(List<Cliente> clientesFiltrados) {
this.clientesFiltrados = clientesFiltrados;
}
}
ClienteBean
package br.com.teste.ejb;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import br.com.teste.entidade.Cliente;
@Stateless
public class ClienteBean {
@PersistenceContext
EntityManager em;
public String salvar(Cliente cliente) {
em.persist(cliente);
return "PaginaListarCliente";
}
public void deletar(Cliente cliente) {
em.remove(em.getReference(Cliente.class, cliente.getId()));
}
public void atualizar(Cliente cliente) {
em.merge(em.getReference(Cliente.class, cliente.getId()));
}
@SuppressWarnings("unchecked")
public List<Cliente> buscarCliente(){
return em.createQuery("FROM Cliente").getResultList();
}
}