Skip to content
This repository was archived by the owner on Nov 20, 2021. It is now read-only.

Filter component

PINGUET Julien edited this page Jun 15, 2015 · 1 revision

Filter component

Example

<ui:composition ...
                xmlns:p62="http://java.sun.com/jsf/composite/component">
    <p62:pathFilter value="#{filtersManagedBean.stringFilter}" />
    <p62:pathFilter value="#{filtersManagedBean.numberFilter}" />
    <p:commandButton action="#{filtersManagedBean.submit}" />
</ui:composition>
@ManagedBean
public class FiltersManagedBean {
    private StringPathFilter stringFilter = new StringPathFilter(QUser.user.login);
    private NumberPathFilter<Integer> numberFilter = new NumberPathFilter<Integer>(QUser.user.email.length());
    // getter & setter
    
    public void submit() {
        // initial query
        JPAQuery query = new JPAQuery().from(QUser.user);
        // filter
        query.where(stringFilter.get());
        query.where(numberFilter.get());
        // query can be used
        System.out.println(query);
    }
}

Converter & Validators

The converter and validators can be used as component child.

<p62:pathFilter ...>
	<f:converter converterId="javax.faces.Integer" />
	<f:validateRequired />
	<f:validateDoubleRange minimum="5" maximum="8" />
</p62:pathFilter>

Operators

The list of operators can be defined by overriding the PathFilter::getOperators() method:

StringPathFilter stringFilter = new StringPathFilter(QUser.user.login) {
        public List<Operator<StringExpression, String>> getOperators() {
            return Arrays.asList(
                    new IsNullOperator(),
                    new IsNotNullOperator(),
                    new StartWithOperator(),
                    new ContainsOperator());
        };
};

Clone this wiki locally