I'm stuck with a simple task for a whole day now. I want to filter each column of my <p:dataTable>. As long as Properties are text based everything works well. But boolean and enum based types are behaving strangely. There is nothing or everything filtered. But sorting works fine. So I attached a filterFunction to see what's going on:
Code: Select all
<p:column headerText="Active"
sortBy="#{figure.active}"
filterBy="#{figure.active}"
filterFunction="#{basicFigureActions.filterBooleans}">
<f:facet name="filter">
<p:selectOneMenu id="soActiveFilter"
onchange="PF('wgBasicFigures').filter()">
<f:converter converterId="javax.faces.Boolean" />
<f:selectItem itemValue="" itemLabel="All" noSelectionOption="yes" />
<f:selectItem itemValue="true" itemLabel="Active" />
<f:selectItem itemValue="false" itemLabel="Inactive" />
</p:selectOneMenu>
</f:facet>
<c:trueOrFalseIcon value="#{figure.active}" />
</p:column>
<p:column headerText="Aggregation"
sortBy="#{figure.aggregation}"
filterBy="#{figure.aggregation}"
filterFunction="#{basicFigureActions.filterAggregations}"
styleClass="TexAlCenter">
<f:facet name="filter">
<p:selectOneMenu id="soAggregationFilter"
onchange="PF('wgBasicFigures').filter()">
<f:converter converterId="aggregationConverter" />
<f:selectItem itemValue="#{null}" itemLabel="All" noSelectionOption="yes" />
<f:selectItem itemValue="SUM" itemLabel="Sum" />
<f:selectItem itemValue="AVERAGE" itemLabel="Average" />
<f:selectItem itemValue="KEY_DATE" itemLabel="Key date" />
</p:selectOneMenu>
</f:facet>
<c:figureAggregation value="#{figure.aggregation}" />
</p:column>
@Named
@ViewScoped
public class BasicFigureActions extends Action {
public boolean filterAggregations( Object value, Object filter, Locale locale ) {
// set breakpoint here
}
public boolean filterBooleans( Object value, Object filter, Locale locale ) {
// set breakpoint here
}
...
}
Thanks in advance,
Oliver