DataTable .filter()和clearFilters()隐藏了消息p:messages和p:growl

Al-*_*far 4 ajax primefaces jsf-2.2

我使用时的问题:

<p:growl id="growl" autoUpdate="true" />
Run Code Online (Sandbox Code Playgroud)

要么

<p:messages id="messages" autoUpdate="true" />
Run Code Online (Sandbox Code Playgroud)

当我有错误消息,并且一旦我使用清除过滤器或重新过滤primefaces数据表,如:

<p:commandButton value="do somthing and re-filter" oncomplete="PF('testTable').filter()"/>

<p:commandButton value="do somthing and clear filter" oncomplete="PF('testTable').clearFilters()"/>

<p:dataTable id="table" widgetVar="testTable" value="#{myMB.data}">
</p:dataTable>
Run Code Online (Sandbox Code Playgroud)

消息被隐藏了,因为autoUpdate是真的,所以ajax调用过滤器被触发并返回没有消息所以这个调用清除消息,如果我做的话将是一个解决方案,autoUpdate="false"但我需要它所以我不想将它设置为假.

Al-*_*far 10

解决方案是将ajax过滤器事件添加到p:datatable:

<p:dataTable id="table" widgetVar="testTable" value="#{myMB.data}">
    <p:ajax event="filter" ignoreAutoUpdate="true" />
    {...}
</p:dataTable>
Run Code Online (Sandbox Code Playgroud)