0

I have a datatable with a column gender.

I want to filter the records in the data table according to gender.

This is my code for that part.

The weird thing is my gender column will keep displaying Female, even if I click on the All and Male button. Any idea why?

  <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>
Lawrence Wong
  • 1,129
  • 4
  • 24
  • 40
  • In my experience p: components inside column filters with enabled sorting always have side effect in triggering sort events. – alexSunder Sep 13 '14 at 06:37

2 Answers2

0

Changing column filterMatchMode attribute value to exact will solve the problem:

filterMatchMode="exact"
alexSunder
  • 417
  • 3
  • 11
0

Add filteredValue to the table component, which keeps a list of filtered values in the backingbean, like so:

<p:dataTable value="#{yourBean.listOfValues}" var="value" filteredValue="#{yourBean.listOfFilteredValues}">

And in the bean of course something like this:

private List<Object> listOfValues;
private List<Object> listOfFilteredValues;

public List<Object> getListOfValues() {
        return listOfValues;
}
public List<Object> getListOfFilteredValues() {
        return listOfFilteredValues;
    }
Dev Angie
  • 3
  • 1