To começando a mexer com o primefaces e estou apanhando dele. Usando o datatable básico ele funciona normal, mas tentando listar usando o datatable lazy, não retorna nenhum valor. Se alguém poder dar uma luz do que eu estou fazendo errado ia ajudar já
o xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:head>
</h:head>
<h:body>
<h:form>
<p:dataTable id="table" var="result" value="#{clienteController.clienteLazy}" paginator="true" rows="10"
paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
selectionMode="single" lazy="true" >
<p:column sortBy="#{result.nome}">
<f:facet name="header">
<h:outputText value="nome"/>
</f:facet>
<h:outputText value="#{result.nome}"/>
</p:column>
<p:column sortBy="#{result.cpf}">
<f:facet name="header">
<h:outputText value="cpf"/>
</f:facet>
<h:outputText value="#{result.cpf}"/>
</p:column>
<p:column sortBy="#{result.email}">
<f:facet name="header">
<h:outputText value="email"/>
</f:facet>
<h:outputText value="#{result.email}"/>
</p:column>
</p:dataTable>
</h:form>
</h:body>
</html>
o lazyDataModel
package br.com.fideliza.controller;
import java.util.List;
import java.util.Map;
import org.primefaces.model.LazyDataModel;
import org.primefaces.model.SortOrder;
import br.com.fideliza.DAO.ClienteDAO;
import br.com.fideliza.model.Cliente;
public class ClienteLazy extends LazyDataModel<Cliente> {
private static final long serialVersionUID = 4032799384164666059L;
private List<Cliente> clientes;
private ClienteDAO clienteDAO = new ClienteDAO();
@Override
public List<Cliente> load(int arg0, int arg1, String arg2, SortOrder arg3,
Map<String, String> arg4) {
clientes = clienteDAO.listaClientes();
return clientes;
}
}
o controller
package br.com.fideliza.controller;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import org.primefaces.model.LazyDataModel;
import br.com.fideliza.DAO.ClienteDAO;
import br.com.fideliza.model.Cliente;
@ManagedBean(name = "ClienteController")
@ViewScoped
public class ClienteController {
private Cliente cliente;
private ClienteDAO clienteDAO;
private DataModel<Cliente> clienteLista;
private LazyDataModel<Cliente> clienteLazy;
public ClienteController() {
this.cliente = new Cliente();
this.clienteDAO = new ClienteDAO();
this.clienteLazy = new ClienteLazy();
}
public String salvaCliente() {
if (verificaEmail() == true) { // se o email está certo salva cadastro
clienteDAO.adicionaCliente(cliente);
return "save";
} else {
return "erro";
}
}
public boolean verificaEmail() { // verifica se os campos "email" e "confirma email" são iguais
if (!cliente.getEmail().equals(cliente.getEmailConfirm())) {
FacesContext.getCurrentInstance().addMessage(
null,
new FacesMessage(FacesMessage.SEVERITY_ERROR,
"email invalido", null));
return false;
} else {
return true;
}
}
public DataModel<Cliente> getClienteLista() { // lista todos clientes
List<Cliente> cliente = new ClienteDAO().listaClientes();
clienteLista = new ListDataModel<Cliente>(cliente);
return clienteLista;
}
public LazyDataModel<Cliente> getClienteLazy() {
clienteLazy = new ClienteLazy();
return clienteLazy;
}
public void setClienteLazy(LazyDataModel<Cliente> clienteLazy) {
this.clienteLazy = clienteLazy;
}
public void setClienteLista(DataModel<Cliente> clienteLista) {
this.clienteLista = clienteLista;
}
public Cliente getcliente() {
return cliente;
}
public void setcliente(Cliente cliente) {
this.cliente = cliente;
}
public ClienteDAO getclienteDAO() {
return clienteDAO;
}
public void setclienteDAO(ClienteDAO clienteDAO) {
this.clienteDAO = clienteDAO;
}
}
E o DAO
package br.com.fideliza.DAO;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
import br.com.fideliza.model.Cliente;
import br.com.fideliza.util.HibernateUtil;
public class ClienteDAO {
private Session session;
private Transaction tx;
public ClienteDAO (){
session = HibernateUtil.getSession();
tx = session.beginTransaction();
}
public void adicionaCliente (Cliente cliente){
session.save(cliente);
tx.commit();
session.close();
}
@SuppressWarnings("unchecked")
public List<Cliente> listaClientes(){
return session.createCriteria(Cliente.class).list();
}
}