问题描述
||
我在列上使用带有filterBy的PrimeFaces dataTable。我还有一个链接,单击该链接可清空基础表。一切正常,直到我过滤掉某些东西。如果然后清除基础表,该表仍会从缓存中显示,并且直到我更改filterBy值后,它才会更新为空表。看来filterBy输入组件仍在保留事件侦听器。这是我的代码片段:
<h:form id=\"logFormId\" prependId=\"false\">
<p:dataTable value=\"#{logger.logLines}\" var=\"logMsg\"
id=\"loggerTable\" dynamic=\"false\" widgetVar=\"logTable\">
<f:facet name=\"header\">
<h:commandLink action=\"#{logger.clearList}\">
<f:ajax render=\"@form\" execute=\"@form\" />
</h:commandLink>
</f:facet>
<p:column>
<f:facet name=\"header\">
<h:outputText value=\"#{msgs.LoggerDate}\" />
</f:facet>
<h:outputText value=\"#{logMsg.dateText}\" />
</p:column>
<p:column sortBy=\"#{logMsg.source}\"
filterBy=\"#{logMsg.source}\" filterMatchMode=\"contains\" >
<f:facet name=\"header\">
<h:outputText value=\"#{msgs.LoggerSource} \" />
</f:facet>
<h:outputText value=\"#{logMsg.source}\" />
</p:column>
</p:dataTable>
</h:form>
解决方法
我不确定我是否知道答案,但是您可以尝试以下方法。我认为这是素面2.2。
我认为p:datatable中不再使用dynamic属性。
在您的f:ajax元素中,尝试render = \“ loggerTable \”而不是@form。