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
0856699f1966OpelBlack
300a66151997RenaultBrown
563b02721973FordYellow
f8b0ee281984AudiBlue
85b769a71965AudiWhite
b70bbd2f1963AudiGreen
90961ab01987BMWYellow
f93f333f2001FordMaroon
c25d86ed1995RenaultRed

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>