Java Primefaces datatable不适用于筛选器+排序
我使用PrimeFacesDataTable来显示大约1000行和7列。它工作得很快,但当我过滤一个列并尝试按不同的列对数据集进行排序时,我会出现奇怪的行为。 这里有一个例子:在第一张图片中,数据表在加载时看起来很棒。因为我在处理敏感数据,所以它被严格审查。在第二张图片中,我过滤了2列,在此之前datatable工作正常,但是如果我在这之后对第三列进行排序,我将停止工作,不会显示正确的行。此处显示的值não determinado和许多白色字段在我的数据中不存在 和 这是我的密码:Java Primefaces datatable不适用于筛选器+排序,java,primefaces,datatable,Java,Primefaces,Datatable,我使用PrimeFacesDataTable来显示大约1000行和7列。它工作得很快,但当我过滤一个列并尝试按不同的列对数据集进行排序时,我会出现奇怪的行为。 这里有一个例子:在第一张图片中,数据表在加载时看起来很棒。因为我在处理敏感数据,所以它被严格审查。在第二张图片中,我过滤了2列,在此之前datatable工作正常,但是如果我在这之后对第三列进行排序,我将停止工作,不会显示正确的行。此处显示的值não determinado和许多白色字段在我的数据中不存在 和 这是我的密码: <
<p:dataTable var="prot" value="#{myBean.listaProtocolos}" rows="15"
sortBy="#{prot.dataEntradaArea}" sortFunction="#{myBean.sortXMLDatas}"
sortOrder="descending" paginator="true" style="font-size: 0.9em;"
paginatorPosition="bottom">
<p:column filterBy="${prot.nrProtocolo}" filterMatchMode="contains"
width="8%" style="text-align:center">
<f:facet name="header">ID</f:facet>
<p:commandLink action="#{myBean.verDetalhesProtocolo}">
<h:outputText value="#{prot.nrProtocolo}"
style="text-decoration: underline;"/>
<f:setPropertyActionListener target="#{myBean.nrProtocolo}"
value="#{prot.nrProtocolo}" />
</p:commandLink>
</p:column>
<p:column filterBy="${prot.nrProcesso}" filterMatchMode="contains"
width="10%">
<f:facet name="header">Número</f:facet>
<h:outputText value="#{prot.nrProcesso}" />
</p:column>
<p:column filterBy="${prot.tipoDeProtocoloDescricao}"
filterOptions="#{myBean.filtrosTipoDeProtocoloDescricao}"
width="10%">
<f:facet name="header">Processo / Protocolo</f:facet>
<h:outputText value="#{prot.tipoDeProtocoloDescricao}" />
</p:column>
<p:column filterBy="${prot.assunto}" sortBy="#{prot.assunto}"
filterMatchMode="contains" width="30%">
<f:facet name="header">Assunto</f:facet>
<h:outputText value="#{prot.assunto}" />
</p:column>
<p:column filterBy="${prot.areaAtual}" sortBy="#{prot.areaAtual}"
filterMatchMode="contains" width="15%">
<f:facet name="header">Área Atual</f:facet>
<h:outputText value="#{prot.areaAtual}" />
</p:column>
<p:column filterBy="${prot.tipo}" sortBy="#{prot.tipo}"
filterMatchMode="contains" width="17%">
<f:facet name="header">Tipo</f:facet>
<h:outputText value="#{prot.tipo}" />
</p:column>
<p:column filterBy="${prot.dataEntradaAreaFormatada}"
sortBy="#{prot.dataEntradaArea}" sortFunction="#{myBean.sortXMLDatas}"
filterMatchMode="contains" width="10%" style="text-align:center">
<f:facet name="header">Data de Entrada</f:facet>
<h:outputText value="#{prot.dataEntradaAreaFormatada}" />
</p:column>
</p:dataTable>
我正在使用PrimeFacesV6.0。myBean是@SessionScope
为什么会发生这种行为?我去年也有类似的问题。我设法解决了一个我不太满意的问题,使用filterFunction={mbean.filter}并创建了我自己的filter函数。去年我遇到了类似的问题。我设法解决了一个问题,我不太喜欢使用filterFunction={mbean.filter}并创建我自己的filter函数。我注意到您的p:datatable标记中缺少一个重要的值,即filteredValue=,它是另一个类似于value=的列表,用于保存过滤后的值
filteredValue="#{myBean.filteredListaProtocolos}"
我注意到p:datatable标记中缺少一个重要的值,即filteredValue=它是另一个类似于value=的列表,该列表保存过滤后的值
filteredValue="#{myBean.filteredListaProtocolos}"
谢谢我将为每种类型添加一个filterFunction并尝试!当@melloware应答时,我正在编写代码。他的想法很管用,所以我放弃了创建过滤器。谢谢你的帮助!谢谢我将为每种类型添加一个filterFunction并尝试!当@melloware应答时,我正在编写代码。他的想法很管用,所以我放弃了创建过滤器。谢谢你的帮助!非常感谢,这很有效。我还想说,我们应该在不实例化列表的情况下添加getter和setter,例如filteredlistprotocolo我进行了实例化,但它开始表现得很尴尬:非常感谢,这很有效。我还想说,我们应该在不实例化列表的情况下添加getter和setter,例如FilteredListProtocolo我进行了实例化,但它开始表现得很尴尬: