我使用Primefaces 3.5创建带过滤器的dataTable。
<h:form id="table">
<div class="showRuleStyle">
<p:dataTable id="RuleTable" var="e" value="#{ruleListBean.rules}" filteredValue="#{ruleListBean.filteredRules}" styleClass="ruleTable" paginator="true" paginatorPosition="bottom" rows="15" emptyMessage="Keine Einträge gefunden.">
<p:column id="companyColumn" headerText="Name" filterBy="#{e.name}" filterOptions="#{ruleListBean.filterNameOptions}" >
<h:outputText value="#{e.name}"></h:outputText>
</p:column>
...
<p:column>
<f:facet name="header"></f:facet>
<h:commandButton id="DeleteRuleButton" value="Löschen" styleClass="buttondefault" action="#{ruleListBean.removeRule(e)}" update=":table"></h:commandButton>
</p:column>
</p:dataTable>
</div>
</h:form>
现在,我按预期获得表格,并可以选择更新表格的过滤器。但现在,如果我尝试选择不同的过滤器或选择空过滤器,则没有任何反应。如果我单击按钮,它会再次起作用,我认为这是因为表单的更新。
我尝试添加
<p:ajax event="filter" update=":table">
和其他事件,但它不起作用。
有什么建议吗?
电贺 亚历
答案 0 :(得分:0)
ruleListBean的范围是什么?我已经尝试了你的代码,它按预期工作(没有p:ajax)。
我的ruleListBean在视图范围内。
建议使用比viewscope更长的请求范围 保留filteredValue,以便之后仍可访问已过滤的列表 过滤。 (PrimeFaces用户指南第135页)
注意:将h:commandButton更改为p:commandButton,以便您可以使用更新功能。