我正在使用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"
/>
传递到执行的对象不是正确的回调对象,而它仍然是指回调对象在旧的未过滤列表中的相同位置。
您是否尝试过不使用filteredValue? – Kukeltje
它没有filteredValue工作。但是,由于表格中的条目太多,用户更容易过滤,然后单击操作。 –