Jsf Primefaces使用selectOneButton进行过滤
我有一个带有性别列的数据表 我想根据性别筛选数据表中的记录 这是我那部分的代码 奇怪的是,我的性别栏会一直显示女性,即使我点击了“全部和男性”按钮。知道为什么吗Jsf Primefaces使用selectOneButton进行过滤,jsf,primefaces,jsf-2.2,selectonemenu,Jsf,Primefaces,Jsf 2.2,Selectonemenu,我有一个带有性别列的数据表 我想根据性别筛选数据表中的记录 这是我那部分的代码 奇怪的是,我的性别栏会一直显示女性,即使我点击了“全部和男性”按钮。知道为什么吗 <p:column filterBy="#{staff.gender}" sortBy="#{staff.gender}" headerText="Gender" filterMatchMode="equals"> <f:facet name="filter"
<p:column filterBy="#{staff.gender}" sortBy="#{staff.gender}" headerText="Gender" filterMatchMode="equals">
<f:facet name="filter">
<p:selectOneButton onchange="PF('staffTable').filter()">
<f:converter converterId="javax.faces.Boolean" />
<f:selectItem itemLabel="All" itemValue="" />
<f:selectItem itemLabel="Male" itemValue="true" />
<f:selectItem itemLabel="Female" itemValue="false" />
</p:selectOneButton>
</f:facet>
<h:outputText value="#{staff.gender ? 'Male': 'Female'}" />
</p:column>
将列filterMatchMode属性值更改为exact将解决以下问题:
filterMatchMode="exact"
将filteredValue添加到table组件,该组件在backingbean中保留一个筛选值列表,如下所示:
<p:dataTable value="#{yourBean.listOfValues}" var="value" filteredValue="#{yourBean.listOfFilteredValues}">
在豆子里,当然是这样的:
private List<Object> listOfValues;
private List<Object> listOfFilteredValues;
public List<Object> getListOfValues() {
return listOfValues;
}
public List<Object> getListOfFilteredValues() {
return listOfFilteredValues;
}
根据我的经验,p:启用排序的列过滤器中的组件在触发排序事件时总是有副作用。