[EDIT]
Olá, tenho uma tabela que é gerada conforme os seguintes passos:
1 - o usuário escolhe 2 parâmetros e um gráfico é gerado de acordo dom esses 2 parâmetros
2 - nessa tela do gráfico há um botão onde é exibido uma tabela referente a esse gráfico gerado
3 - a tabela é gerada na tela através de um modal, baseado na escolha da etapa 1
O problema: quando faço um filterBy, a tabela não atualiza corretamente, ela trava na página 1 com as informações congeladas, mesmo se eu apagar o conteúdo preenchido no filterBy a tabela continua travada sem poder fazer mais qualquer tipo de consulta.
Segue os códigos:
template.xhtml:
[code]ui:fragment
<h:form>
<p:dataTable id=“registros” var=“registro” value="#{processoController.registros.listaRegistros}" scrollable=“true” scrollWidth=“900” scrollHeight="350"
widgetVar=“listaRegistros” emptyMessage="Não há registros.“
filteredValue=”#{processoController.registros.filtroListaRegistros}"
paginator=“true” rows=“15” paginatorPosition=“bottom"
paginatorTemplate=”{CurrentPageReport} {RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}"
rowsPerPageTemplate="15,25,50,100"
currentPageReportTemplate=“Mostrando de {startRecord} até {endRecord} de {totalRecords} registros”>
[b] <ui:insert name="colunas"/>[/b]
<f:facet name="footer">
<p:commandButton value="CSV" ajax="false" styleClass="btn" icon="ui-icon-arrowthickstop-1-s">
<p:dataExporter type="csv" target="registros" fileName="#{processoController.nomeArquivo}"/>
</p:commandButton>
</f:facet>
</p:dataTable>
</h:form>
</ui:fragment>[/code]
Como podemos ver, esse template gera um dataTable que serve para todas as demais páginas que contém as colunas das tabelas. Um dos problemas é que value="#{processoController.registros.listaRegistros}" me devolve uma lista genérica: “private List listaRegistros”; pois cada página tem uma lista com atributos diferentes uma da outra.
Abaixo segue um exemplo da página que usa o template e contém as colunas que devem popular a dataTable:
[code]<ui:composition template=“template.xhtml”>
<ui:define name=“colunas”>
<p:column filterBy="#{registro.codCliente}" filterMatchMode=“contains” width=“125”>
<f:facet name=“header”>
<h:outputText value=“Código do cliente” />
</f:facet>
<h:outputText value="#{registro.codCliente}" />
</p:column>
<p:column filterBy="#{registro.numCadastro}" filterMatchMode="contains" width="125">
<f:facet name="header">
<h:outputText value="Número cadastro" />
</f:facet>
<h:outputText value="#{registro.numCadastro}" />
</p:column>
<p:column filterBy="#{registro.timestamp}" filterMatchMode="contains" width="125">
<f:facet name="header">
<h:outputText value="Timestamp" />
</f:facet>
<h:outputText value="#{registro.timestamp}">
<f:convertDateTime pattern="dd/MM/yyyy HH:mm:ss" timeZone="#{dataController.timezone}"/>
</h:outputText>
</p:column>
<p:column filterBy="#{registro.numDocumento}" filterMatchMode="contains" width="150">
<f:facet name="header">
<h:outputText value="Número documento" />
</f:facet>
<h:outputText value="#{registro.numDocumento}" />
</p:column>
<p:column filterBy="#{registro.mesCompetencia}" filterMatchMode="contains" width="125">
<f:facet name="header">
<h:outputText value="Mês competência" />
</f:facet>
<h:outputText value="#{registro.mesCompetencia}" />
</p:column>
<p:column filterBy="#{registro.anoCompetencia}" filterMatchMode="contains" width="125">
<f:facet name="header">
<h:outputText value="Ano competência" />
</f:facet>
<h:outputText value="#{registro.anoCompetencia}" />
</p:column>
<p:column filterBy="#{registro.insDivida}" filterMatchMode="contains" width="125">
<f:facet name="header">
<h:outputText value="Ins dívida" />
</f:facet>
<h:outputText value="#{registro.insDivida}" />
</p:column>
<p:column filterBy="#{registro.livro}" filterMatchMode="contains" width="125">
<f:facet name="header">
<h:outputText value="Livro" />
</f:facet>
<h:outputText value="#{registro.livro}" />
</p:column>
<p:column filterBy="#{registro.folha}" filterMatchMode="contains" width="125">
<f:facet name="header">
<h:outputText value="Folha" />
</f:facet>
<h:outputText value="#{registro.folha}" />
</p:column>
<p:column filterBy="#{registro.volume}" filterMatchMode="contains" width="125">
<f:facet name="header">
<h:outputText value="Volume" />
</f:facet>
<h:outputText value="#{registro.volume}" />
</p:column>
<p:column filterBy="#{registro.fundamento}" filterMatchMode="contains" width="300">
<f:facet name="header">
<h:outputText value="Fundamento" />
</f:facet>
<h:outputText value="#{registro.fundamento}" />
</p:column>
<p:column filterBy="#{registro.dataInscricao}" filterMatchMode="contains" width="125">
<f:facet name="header">
<h:outputText value="Data inscrição" />
</f:facet>
<h:outputText value="#{registro.dataInscricao}">
<f:convertDateTime pattern="dd/MM/yyyy HH:mm:ss" timeZone="#{dataController.timezone}"/>
</h:outputText>
</p:column>
<p:column filterBy="#{registro.status}" filterMatchMode="contains" width="125">
<f:facet name="header">
<h:outputText value="Status" />
</f:facet>
<h:outputText value="#{registro.status}" />
</p:column>
<p:column filterBy="#{registro.processado}" filterMatchMode="contains" width="125">
<f:facet name="header">
<h:outputText value="Processado" />
</f:facet>
<h:outputText value="#{registro.processado}" />
</p:column>
<p:column filterBy="#{registro.tipo}" filterMatchMode="contains" width="125">
<f:facet name="header">
<h:outputText value="Tipo" />
</f:facet>
<h:outputText value="#{registro.tipo}" />
</p:column>
<p:column filterBy="#{registro.valorImposto}" filterMatchMode="contains" width="125">
<f:facet name="header">
<h:outputText value="Valor imposto" />
</f:facet>
<h:outputText value="#{registro.valorImposto}" />
</p:column>
<p:column filterBy="#{registro.controleParcela}" filterMatchMode="contains" width="125">
<f:facet name="header">
<h:outputText value="Controle parcela" />
</f:facet>
<h:outputText value="#{registro.controleParcela}" />
</p:column>
</ui:define>
</ui:composition>[/code]
Alguém tem alguma sugestão? Estou alguns dias já com esse problema e não consigo resolver.
Já gerei a tabela diretamente sem o template, já criei um objeto representando a tabela especificada e também já tentei usar o “columns” para gerar a tabela dinamicamente, nenhuma das opções funcionou.
Obrigado!!