Paginação com Primefaces

Olá pessoal, estou tentando fazer a pagina na minha dataTable com a propriedde lazy do primefaces, mas o problema é que os registros nao aparecem na table. O que fazer?

Table:
[code]<p:dataTable id=“dtCarreta” value="#{carretaMBean.lazyTransacaoDataModel}" var=“item” selectionMode=“true”
selection="#{carretaMBean.selectedCarretas}" emptyMessage="#{msgs.dtVazia}"
paginator=“true” lazy=“true” rows=“3”>

<f:facet name=“header”>
<h:commandLink id=“clkXls”>
<p:graphicImage value=“imagens/excel.png” />
<p:dataExporter type=“xls” target=“dtCarreta” fileName="#{msgs.dtEpt}"
excludeColumns=“6” postProcessor="#{carretaRelMBean.postProcessoXLS}"/>
</h:commandLink>
<p:tooltip for=“clkXls” value="#{msgs.tpClkXls}" showEffect=“grow” position=“topRight”
hideEffect=“grow” showEffectLength=“100” hideEffectLength=“500” />

     <p:spacer height="10px" />  
  
     <h:commandLink id="clkPdf">  
         <p:graphicImage value="imagens/pdf.png" />  
         <p:dataExporter type="pdf" target="dtCarreta" fileName="#{msgs.dtEpt}" excludeColumns="6"/>  
     </h:commandLink>  
     <p:tooltip for="clkPdf" value="#{msgs.tpClkPdf}" showEffect="grow" position="topRight"  
                hideEffect="grow" showEffectLength="100" hideEffectLength="500" />  
</f:facet>  
<p:column id="clnCodCarreta" sortBy="#{item.codigocarreta}" filterBy="#{item.codigocarreta}">  
     <f:facet name="header">  
         <h:outputText id="optCodigoCarreta" value="#{msgs.optTableCodigoCarreta}" />  
     </f:facet>  
     <h:outputText value="#{item.codigocarreta}"/>  
</p:column>  
<p:column id="clnDescricaoCarreta" sortBy="#{item.descricao}" filterBy="#{item.descricao}">  
     <f:facet name="header">  
         <h:outputText id="optDescricaoCarreta" value="#{msgs.optTableDescricaoCarreta}" />  
     </f:facet>  
     <p:commandLink id="clkDescricao" value="#{item.descricao}" update="frmCadastrarCarreta:pnlCadastro"  
                    styleClass="clkEditar">  
         <f:setPropertyActionListener value="#{item}" target="#{carretaMBean.selectedCarreta}" />  
     </p:commandLink>  
     <p:tooltip for="clkDescricao" value="#{msgs.tpEditar}" showEffect="grow" position="topRight"  
                hideEffect="grow" showEffectLength="100" hideEffectLength="500" />  
</p:column>  
<p:column id="clnPlaca" sortBy="#{item.placa}" filterBy="#{item.placa}">  
     <f:facet name="header">  
         <h:outputText value="#{msgs.optTablePlacaCarreta}" />  
     </f:facet>  
     <h:outputText value="#{item.placa}"/>  
</p:column>  
<p:column id="clnAno" sortBy="#{item.ano}" filterBy="#{item.ano}">  
     <f:facet name="header">  
         <h:outputText value="#{msgs.optTableAnoCarreta}" />  
     </f:facet>  
     <h:outputText value="#{item.ano}"/>  
</p:column>  
<p:column id="clnCor" sortBy="#{item.cor}" filterBy="#{item.cor}">  
     <f:facet name="header">  
         <h:outputText value="#{msgs.optTableCorCarreta}" />  
     </f:facet>  
     <h:outputText value="#{item.cor}"/>  
</p:column>  
<p:column id="clnCarroceira" sortBy="#{item.carroceria.descricao}" filterBy="#{item.carroceria.descricao}">  
     <f:facet name="header">  
         <h:outputText value="#{msgs.optTableCarroceriaCarreta}" />  
     </f:facet>  
     <h:outputText value="#{item.carroceria.descricao}"/>  
</p:column>  
</p:dataTable>[/code]  

Managed Bean:

private LazyDataModel<Carreta> lazyTransacaoDataModel;
[code]public LazyDataModel<Carreta> getLazyTransacaoDataModel() {  
        if (lazyTransacaoDataModel == null) {  
            lazyTransacaoDataModel = new LazyDataModel<Carreta>() {  
  
                @Override  
                public List<Carreta> load(int first, int pageSize, String string, boolean bln, Map<String, String> map) {  
                    List<Carreta> pesquisaCarreta = carretaDAO.getCarreta();  
                    return pesquisaCarreta;  
                }  
            };  
            lazyTransacaoDataModel.setPageSize(10);  
        }  
        return lazyTransacaoDataModel;  
    }  
  
    public void setLazyTransacaoDataModel(LazyDataModel<Carreta> lazyTransacaoDataModel) {  
        this.lazyTransacaoDataModel = lazyTransacaoDataModel;  
    }  [/code]

DAO:
public List<Carreta> getCarreta() { List<Carreta> list = getPureList("from Carreta carreta"); return list;

Utiliza um List ao invés de LazyDataModel

Meu caro, não posso usar o List ao invés de LazyDataModel porque quando vou usar o lazyTransacaoDataModel da erro nessa linha: lazyTransacaoDataModel.setPageSize(10);, porque é um componente do Primefaces.
Vc já fez paginação por demanda com Primefaces? Se fez, poderia me enviar o código? Se não quiiser postar aqui me envia por email: clever-rossi@hotmail.com

Abraço.

[quote=clever]Meu caro, não posso usar o List ao invés de LazyDataModel porque quando vou usar o lazyTransacaoDataModel da erro nessa linha: lazyTransacaoDataModel.setPageSize(10);, porque é um componente do Primefaces.
Vc já fez paginação por demanda com Primefaces? Se fez, poderia me enviar o código? Se não quiiser postar aqui me envia por email: clever-rossi@hotmail.com

Abraço.[/quote]

cara tinha um problema com este Lazy do prime tbm no meu caso ele não paginava mais quando coloquei um setRowCount(1); no meu código deu certo tenta aewhh.

Se vc tiver um Dao generico crie 2 metodos.

Um para a listagem.

public List<T> listaTodosPaginada(int firstResult, int maxResults) {
		EntityManager em = new JPAUtil().getEntityManager();
		CriteriaQuery<T> query = em.getCriteriaBuilder().createQuery(classe);
		query.select(query.from(classe));

		List<T> lista = em.createQuery(query).setFirstResult(firstResult)
				.setMaxResults(maxResults).getResultList();

		em.close();
		return lista;
	}

Outro para contar o conteudo do Bd.

public int contaTodos() {
		EntityManager em = new JPAUtil().getEntityManager();
		long result = (Long) em.createQuery("select count(n) from nomeTabela n").getSingleResult();
		em.close();
		
		return (int) result;
	}

No seu DataModel. Não esqueça de extender a classe com LazyDataModel

public List<NotaFiscal> load(int inicio, int quantidade, String campoOrdenacao, boolean sentidoOrdenacao,
			Map<String, String> filtros) {
		
		DAO<NotaFiscal> dao = new DAO<NotaFiscal>(NotaFiscal.class);		
		
		return dao.listaTodosPaginada(inicio, quantidade);
	}

no seu MB

public nomeDoMetodo(){
		this.dataModel = new DataModelNotasFiscais();
		
		DAO<nomeBean> dao = new DAO<nomeBean>(nomeBean.class);
		this.dataModel.setRowCount(dao.contaTodos()); //chama o metodo de contagem da qtidade do banco
		this.dataModel.setPageSize(5);//seleciona a quantidade de paginação
	}

roda la e testa…

Esqueci…

lá no seu data table.
acrescente tbm

<p:dataTable dynamic "true"></p:dataTable>