我想在我的懒数据表上添加一些额外的过滤器,但这些字段不是基于我的字段(实际上我的过滤器是dateFrom和dateTo,我只有一个字段" Date" )。
我希望在我的数据表顶部有两个额外的过滤字段,而不是全局过滤器:
<f:facet name="header">
<p:outputPanel>
<p:inputText id="globalFilterOther" onkeyup="PF('myTable').filter()" style="display:inlineblock;"/>
<p:inputText id="globalFilterAnOtherFilter" onkeyup="PF('myTable').filter()" style="display:inlineblock;"/>
</p:outputPanel>
</f:facet>
问题是,只要我将id更改为除全局Filter之外的其他内容,就不会检测到过滤器。我该怎么办?
答案 0 :(得分:2)
最简单的方法是将两个(或更多)额外过滤器字段绑定到Map<String,String>
。例如,向您的bean添加名为filters
的地图:
private Map<String,String> filters = new HashMap<>();
// Include getter and setter
...并将过滤器绑定到地图的属性:
<p:inputText value="#{myBean['field']}"
onkeyup="PF('myTable').filter()"/>
<p:inputText value="#{myBean['otherField']}"
onkeyup="PF('myTable').filter()"/>
现在,您唯一需要做的就是向p:dataTable
添加过滤器监听器,然后将filters
地图添加到事件过滤器中,您就完成了。
豆:
public void onFilter(FilterEvent event){
event.getFilters().putAll(filters);
}
XHTML:
<p:dataTable ...>
<p:ajax event="filter" listener="#{myBean.onFilter}"/>
</p:dataTable>