Primefaces dataTable filter

1,019 views
Skip to first unread message

Gustavo Delgado

unread,
Apr 28, 2012, 5:11:31 PM4/28/12
to jav...@googlegroups.com
Alguém sabe como acessar a lista parcial, quando aplicamos um filtro padrão da dataTable do Primefaces (filterBy)?
No meu caso a necessidade é a seguinte: coloquei no rodapé da tabela a soma de algumas colunas e queria que esta soma fosse parcial, de acordo com o resultado após aplicação do filtro.
No debug pude ver que mesmo com o filtro aplicado, minha "List" continua com todos os resultados. Alguém sabe se o primefaces gera uma outra List com os resultados parciais? Se sim, como faço para acessá-la para que a soma seja em cima dela, e não da List original?

Pablo Nóbrega

unread,
Apr 28, 2012, 6:32:16 PM4/28/12
to jav...@googlegroups.com
Dei uma olhada na documentação e não vi nenhum listener que você pudesse chamar no lado do servidor. Nesse caso, sugiro criar um filtro manualmente que processe alguma action. Dessa forma você pode realizar os cálculos e atualizar os valores.

Atenciosamente,

Pablo Nóbrega
Mestrando em Computação Aplicada - UECE
Analista de Sistemas UECE
http://pablonobrega.wordpress.com
pablo....@uece.br


--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil

Rafael Pestano

unread,
Apr 28, 2012, 8:38:14 PM4/28/12
to jav...@googlegroups.com
você pode usar o evento de filter na datatable do primefaces, algo como:

<p:datatable> ...
        <p:ajax event="filter" listener="#{mBean.action}"/>
</p:datatable>

 "No debug pude ver que mesmo com o filtro aplicado, minha "List" continua com todos os resultados." como você está fazendo o filtro?
 
Att,

Rafael M. Pestano

Desenvolvedor Java Cia. de Processamento de Dados do Rio Grande do Sul
Graduando em Ciência da Computação UFRGS
@realpestano 


De: Pablo Nóbrega <pablonob...@gmail.com>
Para: jav...@googlegroups.com
Enviadas: Sábado, 28 de Abril de 2012 19:32
Assunto: Re: [javasf] Primefaces dataTable filter

Gustavo Delgado

unread,
Apr 29, 2012, 6:50:31 PM4/29/12
to jav...@googlegroups.com
Rafael, estava tentando da forma que vc sugeriu mesmo, com o evento "filter". Então a cada letra digitada o método é chamado novamente, e nestas chamadas vi que a quantidade de elementos na List não muda p/ q eu possa fazer a soma parcial.

Não fiz nenhuma implementação diferente, apenas utilizei o filtro padrão, por ex:

<p:ajax event="filter" listener="#{vagaCadastroMB.filterListener}"/>

<p:column headerText="#{msg.labelArea}" sortBy="#{item.areaConhecimento.nome}" sortFunction="#{vagaCadastroMB.stringComparator.compare}" filterBy="#{item.areaConhecimento.nome}" filterMatchMode="contains">
         <h:outputText value="#{item.areaConhecimento.nome}" />  
</p:column>


Será que existe algum parâmetro de evento que eu possa passar na chamada deste método listener que possa retornar a lista parcial?

Gustavo Delgado

unread,
Apr 29, 2012, 7:30:46 PM4/29/12
to jav...@googlegroups.com
Acabei de encontrar a resposta :)

public void filterListener(FilterEvent filterEvent){
        List<Vaga> vagasParcial = (List<Vaga>) filterEvent.getData();
        calcularTotais(vagasParcial);
}

Agora o ideal seria conseguir atualizar os rodapés das colunas, que contém as somas, mas pelo que andei lendo não dá para "forçar" um update em uma parte apenas de uma dataTable.

Marcelo Preis Ferreira

unread,
Apr 30, 2012, 8:36:34 AM4/30/12
to jav...@googlegroups.com
faz um update "idCollumFoooter" acho que resolve, posta o resultado ai...

Gustavo Delgado

unread,
Apr 30, 2012, 12:56:03 PM4/30/12
to jav...@googlegroups.com
Não funciona o update p/ o id do footer, ou p/ qualquer outro elemento dentro dele. Não dá nenhum erro, mas também não atualiza.
Reply all
Reply to author
Forward
0 new messages