This repository was archived by the owner on Nov 20, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
Filter component
PINGUET Julien edited this page Jun 15, 2015
·
1 revision
<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);
}
}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>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());
};
};