Primefaces lazy datatable:放置我自己的筛选器而不是GlobalFilter

Primefaces lazy datatable:放置我自己的筛选器而不是GlobalFilter,primefaces,filter,datatable,Primefaces,Filter,Datatable,我想在我的惰性数据表上添加一些额外的过滤器,但是这些字段不是基于我的字段(实际上我的过滤器是dateFrom和dateTo,我只有一个字段“Date”) 我希望在数据表顶部有两个额外的筛选器字段,而不是全局筛选器: <f:facet name="header"> <p:outputPanel> <p:inputText id="globalFilterOther" onkeyup="PF('myTable').filter()" style=

我想在我的惰性数据表上添加一些额外的过滤器,但是这些字段不是基于我的字段(实际上我的过滤器是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更改为全局筛选器以外的内容,就不会检测到任何筛选器。怎么做?

最简单的方法是将两个(或更多)额外的过滤器字段绑定到
映射。例如,将名为
filters
的映射添加到bean中:

private Map<String,String> filters = new HashMap<>();
// Include getter and setter
XHTML:

<p:dataTable ...>
  <p:ajax event="filter" listener="#{myBean.onFilter}"/>
</p:dataTable>


就像你通常会创建任何过滤东西的东西一样。通过其
属性和进行实际筛选的方法(在本例中为lazyDataModel中的load方法)将输入绑定到backingbean中的字段访问该bean中的字段并在技术筛选中使用它们…@Kukeltje,这将起作用。将字段绑定到
映射
并将该映射添加到筛选器侦听器中的筛选器也是一个选项。我将看看是否可以将此答案增强为完整示例。我看到初学者在努力将lazydatamodel和附加过滤器结合起来。我为过滤器使用了producer方法,并拥有过滤器(实际上是在一个映射中,多租户的映射除外)
public void onFilter(FilterEvent event){
  event.getFilters().putAll(filters);
}
<p:dataTable ...>
  <p:ajax event="filter" listener="#{myBean.onFilter}"/>
</p:dataTable>