Oi
Como sugerido apliquei o LazyDataModel, porém os filtros pararam de funcionar, a unica coisa que ainda funciona eh o paginador alguém sabe me dizer onde errei?
Segue código :
DAO(quantidadeDeElementos)
public int quantidadeDeElementos() {
EntityManager em = new JPAUtil().getEntityManager();
long resul = (Long) em.createQuery("select count(n) from " + classe.getSimpleName() + " n").getSingleResult();
em.close();
return (int) resul;
}
LivroDataModel
public class LivroDataModel extends LazyDataModel<Livro> {
DAO<Livro> dao = new DAO<Livro>(Livro.class);
public LivroDataModel() {
super.setRowCount(dao.quantidadeDeElementos());
}
@Override
public List<Livro> load(int inicio, int quantidade, String sortField, SortOrder sortOrder,
Map<String, Object> filters) {
return dao.listaTodosPaginada(inicio, quantidade);
}
}
dataTable livro.xhtml
<h:form id="formTabelaLivros">
<p:dataTable value="#{livroBean.livroDataModel}" var="livro" id="tabelaLivros" paginator="true" rows="5" lazy="true">
<f:facet name="header">Livro</f:facet>
<p:column headerText="Título" sortBy="#{livro.titulo}" filterBy="#{livro.titulo}" filterMatchMode="startsWith">
<h:outputText value="#{livro.titulo}" />
</p:column>
<p:column sortBy="#{livro.isbn}" filterBy="#{livro.isbn}" filterMatchMode="contains">
<f:facet name="header">ISBN</f:facet>
<h:outputText value="#{livro.isbn}" />
</p:column>
<p:column sortBy="#{livro.preco}" filterBy="#{livro.preco}" filterFunction="#{livroBean.precoEhMenor}">
<f:facet name="header">Preço</f:facet>
<h:outputText value="#{livro.preco}">
<f:convertNumber type="currency" pattern="R$ #0.00"
currencySymbol="R$" locale="pt_BR" />
</h:outputText>
</p:column>
<p:column headerText="Data" sortBy="#{livro.dataLancamento.time}" filterBy="#{livro.dataLancamento.time}" filterMatchMode="contains">
<h:outputText value="#{livro.dataLancamento.time}">
<f:convertDateTime pattern="dd/MM/yyyy" timeZone="America/Sao_Paulo" />
</h:outputText>
</p:column>
<p:column>
<f:facet name="header">Alterar</f:facet>
<h:commandLink value="Alterar" action="#{livroBean.carregar(livro)}"/>
</p:column>
<p:column>
<f:facet name="header">Remover</f:facet>
<h:commandLink value="Remover" action="#{livroBean.remover(livro)}"/>
</p:column>
</p:dataTable>
</h:form>