2016-02-29 48 views
0

我正在使用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" 
/> 

传递到执行的对象不是正确的回调对象,而它仍然是指回调对象在旧的未过滤列表中的相同位置。

+0

您是否尝试过不使用filteredValue? – Kukeltje

+0

它没有filteredValue工作。但是,由于表格中的条目太多,用户更容易过滤,然后单击操作。 –

回答

0

看起来这是一个错误。似乎没有解释,或没有理由,我也看到它多次报告没有任何解决方案。我没有时间在我的研究结果上进行研究,但我会将链接提供给任何感兴趣的人Bug Report

+0

如果您指向一个错误报告,至少指向正确的错误报告。 GoogleCode(通常不仅用于PrimeFaces)已关闭(在归档模式下)。如果你阅读了最后两条评论,你就有一个“部分”解决方案。当前的问题列表在GitHub – Kukeltje

+0

它可能处于归档模式,但它仍然是正确的。这是我遇到的问题。你为什么认为这不是正确的?我已经尝试了部分解决方案(比如实现Serializable等)。它们不适合我 –