While evaluating an expression, the ELResolver associated with the ELContext is consulted to do
the initial resolution of the first variable of an expression. It is also consulted when a . or
[] operator is encountered.
For example, in the Jakarta Expression Language expression ${employee.lastName}, the
ELResolver determines what object employee refers to, and what it means to get the
lastName property on that object.
Most methods in this class accept a base and property parameter. In the case of variable
resolution (e.g. determining what employee refers to in ${employee.lastName}), the
base parameter will be null and the property parameter will always be of type
String. In this case, if the property is not a String, the behavior of the
ELResolver is undefined.
In the case of property resolution, the base parameter identifies the base object and the
property object identifies the property on that base. For example, in the expression
${employee.lastName}, base is the result of the variable resolution for
employee and property is the string "lastName". In the expression
${y[x]}, base is the result of the variable resolution for y and
property is the result of the variable resolution for x.
In the case of method call resolution, the base parameter identifies the base object and the
method parameter identifies a method on that base. In the case of overloaded methods, the
paramTypes parameter can be optionally used to identify a method. The paramsparameter are the
parameters for the method call, and can also be used for resolving overloaded methods when the
paramTypes parameter is not specified.
In the case of type conversion resolution, the obj parameter identifies the source object and the
targetType parameter identifies the target type the source to covert to.
Though only a single ELResolver is associated with an ELContext, there are usually multiple
resolvers considered for any given variable or property resolution. ELResolvers are combined together
using CompositeELResolvers, to define rich semantics for evaluating an expression.
For the getValue, getType, setValue, and isReadOnly methods, an
ELResolver is not responsible for resolving all possible (base, property) pairs. In fact, most resolvers
will only handle a base of a single type. To indicate that a resolver has successfully resolved a
particular (base, property) pair, it must set the propertyResolved property of the
ELContext to true. If it could not handle the given pair, it must leave this property
alone. The caller must ignore the return value of the method if propertyResolved is false.
Similarly, for the convertToType method an ELResolver must set the
propertyResolved to true to indicate that it handles the conversion of the object to the
target type.
The getCommonPropertyType method is primarily designed for design-time
tool support, but must handle invocation at runtime as well. The java. method can be
used to determine if the resolver is being consulted at design-time or runtime.
CompositeELResolver, ELContext#getELResolver
| Access | Constructor and Description |
|---|---|
| public |
| Modifier and Type | Method and Description |
|---|---|
| public <T> T | Returns: object converted totargetTypeThe context of this evaluation. context, Object The object to convert. obj, Class<T> The target type for the conversion. targetType)Converts an object to a specific type. |
| public abstract Class | Returns: null if this ELResolver does not know how to handle the given base
object; otherwise Object.class if any type of property is accepted; otherwise the most
general property type accepted for the given base.The context of this evaluation. context, Object The base object to return the most general property type for, or base)null to enumerate the set
of top-level variables that this resolver can evaluate.Returns the most general type that this resolver accepts for the |
| public abstract Class | Returns: If thepropertyResolved property of ELContext was set to true,
the most general acceptable type which must be null if the either the property or the resolver is
read-only; otherwise undefinedThe context of this evaluation. context, Object The base object whose property value is to be analyzed, or base, Object null to analyze a top-level
variable.The property or variable to return the acceptable type for. property)For a given |
| public abstract Object | Returns: If thepropertyResolved property of ELContext was set to true, then
the result of the variable or property resolution; otherwise undefined.The context of this evaluation. context, Object The base object whose property value is to be returned, or base, Object null to resolve a top-level
variable.The property or variable to be resolved. property)Attempts to resolve the given |
| public Object | Returns: The result of the method invocation (null if the method has a void return type).The context of this evaluation. context, Object The bean on which to invoke the method base, Object The simple name of the method to invoke. Will be coerced to a method, Class<?>[] String.An array of Class objects identifying the method's formal parameter types, in declared order. Use
an empty array if the method has no parameters. Can be paramTypes, Object[] null, in which case the method's formal parameter
types are assumed to be unknown.The parameters to pass to the method, or params)null if no parameters.Attempts to resolve and invoke the given |
| public abstract boolean | Returns: If thepropertyResolved property of ELContext was set to true, then
true if the property is read-only or false if not; otherwise undefined.The context of this evaluation. context, Object The base object whose property value is to be analyzed, or base, Object null to analyze a top-level
variable.The property or variable to return the read-only status for. property)For a given |
| public abstract void | setValue(ELContext
The context of this evaluation. context, Object The base object whose property value is to be set, or base, Object null to set a top-level variable.The property or variable to be set. property, Object The value to set the property or variable to. value)Attempts to set the value of the given |
| ELResolver | back to summary |
|---|---|
| public ELResolver() | |
| convertToType | back to summary |
|---|---|
| public <T> T convertToType(ELContext context, Object obj, Class<T> targetType) Converts an object to a specific type.
An
| |
| getCommonPropertyType | back to summary |
|---|---|
| public abstract Class Returns the most general type that this resolver accepts for the
This assists tools in auto-completion and also provides a way to express that the resolver accepts a primitive value,
such as an integer index into an array. For example, the
| |
| getType | back to summary |
|---|---|
| public abstract Class For a given
If this resolver handles the given (base, property) pair, the
This is not always the same as
If the resolver or the property is read-only, this method must return
| |
| getValue | back to summary |
|---|---|
| public abstract Object getValue(ELContext context, Object base, Object property) Attempts to resolve the given
If this resolver handles the given (base, property) pair, the
| |
| invoke | back to summary |
|---|---|
| public Object invoke(ELContext context, Object base, Object method, Class<?>[] paramTypes, Object[] params) Attempts to resolve and invoke the given
If this resolver handles the given (base, method) pair, the A default implementation is provided that returns null so that existing classes that extend ELResolver can continue to function.
| |
| isReadOnly | back to summary |
|---|---|
| public abstract boolean isReadOnly(ELContext context, Object base, Object property) For a given
If this resolver handles the given (base, property) pair, the
| |
| setValue | back to summary |
|---|---|
| public abstract void setValue(ELContext context, Object base, Object property, Object value) Attempts to set the value of the given
If this resolver handles the given (base, property) pair, the
| |