Primefaces Datatable在数据表更新后丢失了Filter字段中的文本

dqt*_*dqt 2 primefaces jsf-2

JSF-2.1 Primefaces 3.5我有一个带过滤器的数据表.我只需要更新数据表上的数据(没有Filter).因为每当我更新数据表时,我都会丢失过滤字段中的文本.

我有一个对话框,确认按钮在数据表的表单之外我该如何解决?

谢谢

<h:form id="form">
<p:dataTable id="cm_dataTable_#{cc.clientId}" widgetVar="cm_dataTableWidget_#{cc.clientId}" var="adr" value="#{cc.attrs.addresses}"rowIndexVar="rowIndex" filterDelay="1000" binding="#{cc.dataTable}" rowKey="#{adr.mailingadresseid}" selection="#{mailingadressenBean.selectedAddresses}">           
<p:column id="colistuploadmeinedaten" filterBy="#{adr.firstname}" filterMatchMode="exact" filterOptions="#{mailingadressenBean.siTrueFalse}" sortBy="#{adr.istuploadmeinedaten}">
    <h:outputText value="#{adr.anrede}" />
</p:column>
</p:datatable>
</h:form>
Run Code Online (Sandbox Code Playgroud)

和Dialog的确认

<p:commandButton id="dm_yesBttn" value="#{langs.yes}" update=":form" actionListener="#{deleteMailingadresseBean.delete}"                    oncomplete="hideDeleteDialog(xhr, status, args)"/>
Run Code Online (Sandbox Code Playgroud)

Dan*_*lor 5

您不能(PrimeFaces 3.5)直接将数据表过滤器与JSF bean绑定,因此在更新整个组件时不会保留它们.

但是,如果在datatable小部件上调用filter(),则数据将从服务器重新加载,而无需重新呈现整个数据表组件(因此将保留过滤器)

<p:dataTable .... widgetVar="myTable"> ...</p:dataTable>

<p:commandButton action="#{myBean.doSth}" .... oncomplete="myTable.filter()"/>
Run Code Online (Sandbox Code Playgroud)