使用o:form进行排序时删除了PrimeFaces数据表过滤includeRequestParams =“true”[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用o:form进行排序时删除了PrimeFaces数据表过滤includeRequestParams =“true”[重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

这是一个问题:PrimeFaces datatable.filter() and url parameter

使用PrimeFaces-5.1和omnifaces-2.1在使用请求参数时使用分页,过滤和排序来呈现数据表。我的数据表是这样构造的:

<o:form includeRequestParams="true">
    <p:dataTable id="hostStateHistoryTable" value="#{HostHistoryBean.hostStateHistoryList}" var="status" widgetVar="statusTable"
    filteredValue="#{HostHistoryBean.filteredHostStateHistoryList}" 
    rowStyleClass="#{status.state eq 0 ? 'up' : null} #{status.state   eq 1 ? 'down' : null} #{status.state eq 2 ? 'unreachable' : null}"
    rows="50" paginator="true" paginatorTemplate="{PageLinks} {RowsPerPageDropdown}" rowsPerPageTemplate="10,50,100">
        <p:column sortBy="#{status.stateTime}">
            <f:facet name="header">Start Time</f:facet>
            <h:outputText id="Start" value="#{status.stateTime}"     />
        </p:column> 
        ... all columns
    </p:dataTable>
</o:form>

但Sorting正在删除PrimeFaces Datatable Filtering。我可以单独排序并单独过滤而没有问题,但是当我在过滤后对数据进行排序时,删除过滤器。再次单击相同的过滤器将不会执行任何操作,但过滤另一个值将显示预期的结果。似乎o:form将重新发送请求,包括属性,而不是使用datatable filteredValue。

编辑:我在这里上传了一个基于eclipse的MCVE项目:http://www.dacave.fr/stackoverflow/test.faces.rar

答案

好的,我发现由于@RequestScoped,每个ajax调用都重置了filteredValue。我想我有点混淆东西。所以我将所有@ManagedBeans切换到@Named然后我创建了一个新的@SessionScoped Bean,其中包含大部分属性,并且@inject一个@RequestScoped bean,其中包含基于请求的属性。

现在一切都按预期工作

以上是关于使用o:form进行排序时删除了PrimeFaces数据表过滤includeRequestParams =“true”[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Primeface确认Dialog可访问性

如何在使用 jquery ui 删除时对元素进行排序?

Java 实现有序链表

时间复杂度最小的堆插入和删除

6.排序总结和优化

如何将 primeface 列包含到组合中