public class AdvancedCriteria
extends java.lang.Object
com.smartgwt.client.docs.serverds
for how to use this documentation.AdvancedCriteria is a format for representing search criteria which may include operators on field values such as "less than", or may include sub-clauses such as several criteria applied to fields joined by an "OR" operator.
Smart GWT DataSources can use AdvancedCriteria to search a list of Record
s, and
the Smart GWT Java Server can translate AdvancedCriteria to either SQL or Hibernate
queries (Note: The server-side AdvancedCriteria handling feature is only available
with the Power and Enterprise Editions of Smart GWT; the Pro Edition is
limited to ordinary criteria handling on the server side).
If the entire dataset is cached locally, Smart GWT can perform AdvancedCriteria filtering on the client, avoiding a server call.
AdvancedCriteria objects can be created directly in java. For example:
AdvancedCriteria criteria = new AdvancedCriteria(OperatorId.AND, new Criterion[]{ new Criterion("salary", OperatorId.LESS_THAN, 80000), new AdvancedCriteria(OperatorId.OR, new Criterion[]{ new Criterion("title", OperatorId.ICONTAINS, "Manager"), new Criterion("reports", OperatorId.NOT_NULL) }) });
In addition to building a raw AdvancedCriteria object as described above, the
DataSource.convertCriteria()
and
DataSource.combineCriteria()
methods
may be used to create and modify criteria based on simple fieldName / value mappings.
When passed to the Smart GWT Server, a server-side AdvancedCriteria instance (in the package com.isomorphic.criteria) can be retrieved from a DSRequest via com.isomorphic.datasource.DSRequest.getAdvancedCriteria(). These same AdvancedCriteria objects can be directly created server side, and applied to a DSRequest via setAdvancedCriteria().
RestDataSource
, the recommended way of integration with
servers that are not running
the Smart GWT Server Framework, defines a standard XML and JSON serialization of
AdvancedCriteria
.
For other servers, you can translate AdvancedCriteria
into whatever format is
expected by the server, typically by implementing DataSource.transformRequest()
.
The internal representation of AdvancedCriteria is a simple JavaScript structure, available via AdvancedCriteria.getJsObj():
// an AdvancedCriteria { _constructor:"AdvancedCriteria", operator:"and", criteria:[ // this is a Criterion { fieldName:"salary", operator:"lessThan", value:"80000" }, { operator:"or", criteria:[ { fieldName:"title", operator:"iContains", value:"Manager" }, { fieldName:"reports", operator:"notNull" } ] } ] }And an AdvancedCriteria can also be created from a JavaScriptObject. This makes AdvancedCriteria very easy to store and retrieve as JSON strings, using
JSONEncoder
.
See Criteria Editing
for information about
editing AdvancedCriteria in a DynamicForm.Modifier and Type | Field and Description |
---|---|
java.lang.Boolean |
strictSQLFiltering
When set to true, causes filtering using this criteria object to follow SQL99 behavior for
dealing with NULL values.
|
Constructor and Description |
---|
AdvancedCriteria() |
public java.lang.Boolean strictSQLFiltering
this discussion
for more
detail.
Default value is null