JSF + PrimeFaces - Paginação sob demanda + getRowData [Resolvido]

3 respostas
honjoya

Boa noite galera,

Estou tendo problemas com paginação sob demanda utilizando primefaces , segue abaixo o código utilizado.
//Metodo de utilizado para popular o DataTable, onde pesquiso todas as publicações de um determinado parceiro

    public LazyDataModel<Publicacao> getLazyPublicacao() {
        this.lazyPublicacao = new LazyDataModel<Publicacao>() {

            @Override
            public List<Publicacao> load(int i, int i1, String string, boolean bln, Map<String, String> map) {                
                return PublicacaoDao.list(i, i1, parceiro.getId());
            };
        };

        this.lazyPublicacao.setPageSize(5);
        this.lazyPublicacao.setRowCount(PublicacaoDao.countList(parceiro.getId()));
        
        return lazyPublicacao;
    }

Código da View.

<h:form>
                    <p:panel>
                        <p:dataTable id="transacaoDataTable" var="pubs" value="#{parceiro.lazyPublicacao}" paginator="true" rows="5" lazy="true" dynamic="true"  paginatorTemplate="{PageLinks}" >  
                            <p:column>
                                <f:facet name="header">Nome</f:facet>
                                <h:outputText value="#{pubs.nome}"/>
                            </p:column>
                            <p:column>
                                <f:facet name="header">Data Inicial</f:facet>
                                <h:outputText value="#{pubs.data_inicio}"/>
                            </p:column>
                            <p:column>
                                <f:facet name="header">Data Final</f:facet>
                                <h:outputText value="#{pubs.data_inicio}"/>
                            </p:column>
                            <p:column>
                                <f:facet name="header">Status</f:facet>
                                <h:outputText value="#{pubs.status}"/>
                            </p:column>
                            <p:column>
                                <f:facet name="header">Opções</f:facet>

                                    <p:commandButton image="ui-icon-pencil" action="#{parceiro.liberaPublicacao()}"  update="contentWindowPublicacao" oncomplete="windowPublicacao.show()"/>
                            </p:column>
                        </p:dataTable>
                    </p:panel>
                    </h:form>

Trecho de código onde tento utilizar o getRowData();

public void liberaPublicacao(){
         this.selectedPublicacao = (Publicacao) this.lazyPublicacao.getRowData();
         System.out.println("Selecionado + " + this.selectedPublicacao.getNome());
    }

Problema ao realizar o clique no botão , não esta entrando no metodo liberaPublicacao() . retirei a paginação sob demanda, funcionou certinho com a view desta maneira… entrando no metodo e trazando o valor para this.selectedPublicacao.

Se alguem souber a solução ou tiver algum exemplo agradeço

3 Respostas

Markus_Alemao

Saudações.

Qual versão do PrimeFaces você esta usando? tive certos problemas com LazyDataModel na versão 2.2.1…

honjoya

Estou utilizando a versão 3.0

honjoya

Implementei o LazyDataModel da versão 3.0 e deu certo… o problema que ao mostrar o datatable, mostra a numeração das paginas , porem não mostra os registros de primeira página, aparecendo somente depois de passar para outra pagina…

Alguem sabe como resolver?

Valeu

Criado 5 de setembro de 2011
Ultima resposta 7 de set. de 2011
Respostas 3
Participantes 2