【问题标题】:PrimeFaces Datatable filtering removed when sorting with o:form includeRequestParams="true" [duplicate]使用 o:form includeRequestParams="true" 排序时删除 PrimeFaces 数据表过滤 [重复]
【发布时间】:2015-06-06 10:27:37
【问题描述】:

这是以下问题: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>

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

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

【问题讨论】:

  • 是否将其更改为 h:form 使其再次工作?请创建一个 mcve,以便其他人可以(尝试)更轻松地复制
  • 将其更改为 h:form 由于 ajax 调用未使用请求参数,因此每个功能都无用
  • 好吧,让我重新表述一下:在您使用的 PrimeFaces 版本中,不使用您的参数的普通排序和过滤是否有效?否则我们可能会追逐主机
  • 它在其他页面上按预期工作(未轮询时)是的
  • MCVE 会有所帮助。我猜错误在于加载逻辑。

标签: primefaces filter datatable omnifaces http-request-parameters


【解决方案1】:

好的,所以我发现由于@RequestScoped,filteredValue 在每个 ajax 调用中都被重置了。 我想我有点把事情搞混了。 所以我将所有@ManagedBeans 切换到@Named 然后我创建了一个具有大部分属性的新@SessionScoped Bean,并@inject 一个带有基于请求的属性的@RequestScoped bean。

现在一切正常

【讨论】:

  • 视图范围的数据可以更好地存储在视图范围的 bean 中,而不是会话范围的 bean 中。另见stackoverflow.com/questions/7031885/…
  • 谢谢 真的很有趣 :) 我切换到 ViewScope 并且两组数据处于更加连贯的状态
  • 所以这意味着filteredValue 后面的支持bean 必须在另一个支持bean 中,即@ViewScoped?我在@RequestScoped 中也有该属性(是的,我现在完全理解它在每次 AJAX 调用时都会重置)。
猜你喜欢
  • 2013-12-23
  • 1970-01-01
  • 2016-04-08
  • 2021-12-07
  • 2015-01-06
  • 2014-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多