2
respostas

Buscando dados sob demanda com LazyDataModel do Primefaces

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>
2 respostas

Oi Lucas, tudo bem? Já estou procurando ajuda pra você, mas queria saber se você já conseguiu encontrar o problema. Isso por que já faz uns dias que o tópico tá em aberto... Ainda precisa de ajuda?

ainda não Wanderson em nenhum dos dois problemas q eu tive no curso de JSF II

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software