プライムフェイスのフィルター機能を含むデータファイルがあります。テーブルに対していくつかの操作を実行できます(例:編集)。ユーザーの操作がajaxを使用して完了すると、データファイルが更新されます。データテーブルをフィルタリングしない場合、テーブルを直接更新し、うまく機能します。残念ながら、使用して編集する場合はそうではありません。
それが私のデータテーブルの様子です:
<p:dataTable id="dataTable" var="row"
value="#{bean.value}"
filteredValue="#{bean.filteredValue}"
paginator="true" rows="25" paginatorPosition="bottom"
rowKey="${row.id}"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}"
editable="true">
更新をトリガーするボタン
<p:commandButton value="Save"
actionListener="#{bean.save}"
update=":form"/>
datatableを更新した後、クライアント側のfilter()
メソッドを呼び出す必要があります。
<p:dataTable widgetVar="dataTableWidgetVar" id="dataTable" var="row"
value="#{bean.value}"
filteredValue="#{bean.filteredValue}"
paginator="true" rows="25" paginatorPosition="bottom"
rowKey="${row.id}"
editable="true">
<p:commandButton value="Save"
actionListener="#{bean.save}"
update=":form"
oncomplete="PF('dataTableWidgetVar').filter()"/>
5より古いPrimeFacesバージョンの場合は、使用する必要があります
<p:commandButton value="Save"
actionListener="#{bean.save}"
update=":form"
oncomplete="dataTableWidgetVar.filter()"/>
Primefaces 5.xの回答を追加しました。ウィジェットvarの呼び出し方法が変更されたためです。
ケレム・ベイドガンの答えとほぼ同じですが、少し修正されています。
<p:commandButton value="Save"
actionListener="#{bean.save}"
update="@form"
oncomplete="PF('dataTableWidgetVar').filter()"/>
または、次のコマンドでフィルターをすべてクリアできます。
<p:commandButton value="Save"
actionListener="#{bean.save}"
update="@form"
oncomplete="PF('dataTableWidgetVar').clearFilters()"/>