DataTable - Filtering

Datatable provides column based and global data filtering feature. There are four different match modes, "startsWith"(default), "endsWith", "contains" and "exact". In addition using filterOptions, predefined filter values can be displayed.

Search all fields:
ModelYearManufacturerColor
containsstartsWithexactendsWith
eaab75ea1964VolvoSilver
e975e2ed1983ChryslerBrown
422847da2003RenaultOrange
2de227b91985AudiMaroon
d93a48292001FordWhite
5cbc03191971FerrariYellow
082375cf1981MercedesSilver
8a6acedf1973AudiWhite
a0a6d4051983OpelSilver

Source

<h:form>

    <p:dataTable id="dataTable" var="car" value="#{tableBean.carsSmall}" widgetVar="carsTable" 
            emptyMessage="No cars found with given criteria" filteredValue="#{tableBean.filteredCars}">

         <f:facet name="header">
            <p:outputPanel>
                <h:outputText value="Search all fields:" />
                <p:inputText id="globalFilter" onkeyup="carsTable.filter()" style="width:150px" />
            </p:outputPanel>
        </f:facet>

        <p:column id="modelColumn" filterBy="#{car.model}" 
                headerText="Model" footerText="contains"
                filterMatchMode="contains">
            <h:outputText value="#{car.model}" />
        </p:column>

        <p:column id="yearColumn" filterBy="#{car.year}"
                headerText="Year" footerText="startsWith">
            <h:outputText value="#{car.year}" />
        </p:column>

        <p:column id="manufacturerColumn" filterBy="#{car.manufacturer}" 
                headerText="Manufacturer" footerText="exact"
                filterOptions="#{tableBean.manufacturerOptions}"
                filterMatchMode="exact">
            <h:outputText value="#{car.manufacturer}" />
        </p:column>

        <p:column id="colorColumn" filterBy="#{car.color}"
                headerText="Color" footerText="endsWith" filterMatchMode="endsWith">
            <h:outputText value="#{car.color}" />
        </p:column>
    </p:dataTable>
    
</h:form>