【问题标题】:Primefaces datatable pagination resets filterPrimefaces 数据表分页重置过滤器
【发布时间】:2016-12-30 12:15:58
【问题描述】:

我正在使用带有过滤器和分页的 p:datatable。两者都可以单独工作,但如果我先过滤然后移到结果的第二页,过滤器将被删除,我看到的是原始数据集的第二页。这是我的桌子的样子:

<p:dataTable value="#{bean.products}" var="product"
        paginator="true" paginatorPosition="bottom" rows="5"
        filteredValue="#{bean.filteredProducts}"
        rowKey="#{product.prdctId}">
    <p:ajax event="sort" skipChildren="false" />
    <p:column headerText="Description" filterBy="#{product.description}" filterMatchMode="contains"
            sortBy="#{product.prdctId}">
        <h:outputText value="#{product.description}" />
    </p:column>

    (other columns)

</p:dataTable>

有什么想法吗?

使用 Primefaces 5.2、JSF 2.0.3

编辑:经过一番搜索,我发现another post 处理同样的问题,但从未得到答复。

【问题讨论】:

  • 使用全局过滤器对其进行了测试,并且可以正常工作。我没有特定于国家/地区的过滤器
  • 我猜处理列过滤器的逻辑有问题。我升级到 PF 6.0 并验证问题仍然可以重现。根据showcase example,将我的表更改为延迟加载并使用自定义数据模型确实有效。不理想,因为我正在处理的数据集已经被缓存,因此我不需要延迟加载,但它可以工作并且没有明显的性能差异。
  • @bendicott 那么也许需要将其标记为重复?

标签: jsf-2 primefaces filter datatable pagination


【解决方案1】:
<p:dataTable value="#{bean.products}" var="product"
    paginator="true" paginatorPosition="bottom" rows="5"
    filteredValue="#{bean.filteredProducts}"
    rowKey="#{product.prdctId}">
<p:ajax event="sort" skipChildren="false" />
<p:column headerText="Description" filterBy="#{product.description}" filterMatchMode="contains"
        sortBy="#{product.prdctId}">
    <h:outputText value="#{product.description}" />
</p:column>
(other columns)

添加您的数据表:widgetVar="productTable"

在您的按钮中添加:oncomplete="PF('productTable').clearFilters();"

【讨论】:

  • 整个问题是分页重置了过滤器;手动清除过滤器列表有什么帮助?
猜你喜欢
  • 2019-03-04
  • 2013-08-28
  • 1970-01-01
  • 2014-01-04
  • 1970-01-01
  • 2013-08-21
  • 2014-05-01
  • 2015-07-01
  • 2013-08-01
相关资源
最近更新 更多