我正在使用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工作。但是,由於表格中的條目太多,用戶更容易過濾,然後單擊操作。 –