【问题标题】:prime faces data table global filter is reordering the elementsprimefaces 数据表全局过滤器正在重新排序元素
【发布时间】:2016-02-29 21:41:51
【问题描述】:

我正在使用 primefaces 5.2。我使用全局过滤器。每行还有一列用于选择操作。当过滤打开时,用户过滤了几行,我注意到,当我单击该行上的按钮时,返回的行与所选行不同。选定行对应于未过滤状态之前的行。 Primefaces/JSF 为每一行分配一个 id,例如“datatable:row_number:element”。 row_number 随着过滤的进行而更新,但是当我对过滤的行调用操作时,选择的行 row_number 是选择之前的行。代码示例见下文

 <p:dataTable value="#{workerRotationPage.callbackList}"
              filteredValue="#{workerRotationPage.filteredList}"
              var="callback"
              widgetVar="callbackTable"
              styleClass="custom-datatable waitingCall"
              paginator="true"
              paginatorPosition="top"
              paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
              rowsPerPageTemplate="10,20,50"
              selection="#{workerRotationPage.callbackWorker}"
              selectionMode="single"
              rowKey="#{callback.id}"
              rows="10">
....
 <p:commandButton 
  icon="fa fa-undo"
  value="Unassign"
  action="#{workerRotationPage.execute('unassignCallbackWorker',callback)}"
  title="Unassign Worker #{callback.worker.person.formattedFirstLastName}"
  update=":mainForm:rotationTableId :mainForm:naworkerTableId :mainForm:assignPanelId"
 />

传递给execute的对象不是正确的回调对象,而是引用旧未过滤列表中相同位置的回调对象。

【问题讨论】:

  • 你试过不带过滤值吗?
  • 它可以在没有过滤值的情况下工作。但是由于表格中的条目太多,用户更容易过滤然后点击操作。

标签: jsf jsf-2 primefaces


【解决方案1】:

看起来这是一个错误。似乎没有解释,也没有理由,我已经看到它报告了很多次,没有任何解决方案。我没有时间研究它,但我会为任何感兴趣的人提供链接Bug Report

【讨论】:

  • 如果您指向错误报告,至少要指向正确的报告。 GoogleCode(通常,不仅适用于 PrimeFaces)已关闭(在存档模式下)。如果你在那里阅读最后两个 cmets,你就有一个“部分”解决方案。当前问题列表在 GitHub 中
  • 它可能处于存档模式,但它仍然是正确的。这是我遇到的问题。为什么你认为它不是正确的?我已经尝试了部分解决方案(例如实现 Serializable 等)。它们对我不起作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-08
  • 1970-01-01
  • 2013-12-23
  • 2012-05-28
  • 2014-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多