public abstract class ELContext
extends java.lang.Object
To parse or evaluate an Expression
, an ELContext
must be provided. The ELContext
holds:
FunctionMapper
that will be used to resolve Jakarta Expression Language Functions. This is
used only in parsing.VariableMapper
that will be used to resolve Jakarta Expression Language Variables. This is
used only in parsing.ELResolver
that will be consulted to resolve model objects and their
propertiesELResolver
sImportHandler
that will be consulted to resolve classes that have been importedLambdaExpression
s
The collection of context objects is necessary because each ELResolver
may need access to a different
context object. For example, Jakarta Server Pages and Jakarta Faces resolvers need access to a
jakarta.servlet.jsp.JspContext
and a jakarta.faces.context.FacesContext
, respectively.
When used in a web container, the creation of ELContext
objects is controlled through the underlying
technology. For example, in Jakarta Server Pages the JspContext.getELContext()
factory method is used.
Some technologies provide the ability to add an ELContextListener
so that applications and frameworks can
ensure their own context objects are attached to any newly created ELContext
.
When used in a stand-alone environment, StandardELContext
provides a default ELContext
, which is
managed and modified by ELManager
.
Because it stores state during expression evaluation, an ELContext
object is not thread-safe. Care
should be taken to never share an ELContext
instance between two or more threads.
ELContextListener
,
ELContextEvent
,
ELResolver
,
FunctionMapper
,
VariableMapper
,
ImportHandler
,
LambdaExpression
,
StandardELContext
Constructor and Description |
---|
ELContext() |
Modifier and Type | Method and Description |
---|---|
void |
addEvaluationListener(EvaluationListener listener)
Registers an evaluation listener to the ELContext.
|
<T> T |
convertToType(java.lang.Object obj,
java.lang.Class<T> targetType)
Converts an object to a specific type.
|
void |
enterLambdaScope(java.util.Map<java.lang.String,java.lang.Object> args)
Installs a Lambda argument map, in preparation for the evaluation of a Lambda expression.
|
void |
exitLambdaScope()
Exits the Lambda expression evaluation.
|
java.lang.Object |
getContext(java.lang.Class<?> key)
Returns the context object associated with the given key.
|
abstract ELResolver |
getELResolver()
Retrieves the
ELResolver associated with this context. |
java.util.List<EvaluationListener> |
getEvaluationListeners()
Returns the list of registered evaluation listeners.
|
abstract FunctionMapper |
getFunctionMapper()
Retrieves the
FunctionMapper associated with this ELContext . |
ImportHandler |
getImportHandler()
Retrieves the
ImportHandler associated with this ELContext . |
java.lang.Object |
getLambdaArgument(java.lang.String arg)
Retrieves the Lambda argument associated with a formal parameter.
|
java.util.Locale |
getLocale()
Get the
Locale stored by a previous invocation to setLocale(java.util.Locale) . |
abstract VariableMapper |
getVariableMapper()
Retrieves the
VariableMapper associated with this ELContext . |
boolean |
isLambdaArgument(java.lang.String arg)
Inquires if the name is a LambdaArgument
|
boolean |
isPropertyResolved()
Returns whether an
ELResolver has successfully resolved a given (base, property) pair. |
void |
notifyAfterEvaluation(java.lang.String expr)
Notifies the listeners after an Jakarta Expression Language expression is evaluated
|
void |
notifyBeforeEvaluation(java.lang.String expr)
Notifies the listeners before an Jakarta Expression Language expression is evaluated
|
void |
notifyPropertyResolved(java.lang.Object base,
java.lang.Object property)
Notifies the listeners when the (base, property) pair is resolved
|
void |
putContext(java.lang.Class<?> key,
java.lang.Object contextObject)
Associates a context object with this
ELContext . |
void |
setLocale(java.util.Locale locale)
Sets the
Locale for this instance. |
void |
setPropertyResolved(boolean resolved)
Called to indicate that a
ELResolver has successfully resolved a given (base, property) pair. |
void |
setPropertyResolved(java.lang.Object base,
java.lang.Object property)
Called to indicate that a
ELResolver has successfully resolved a given (base, property) pair and to
notify the EvaluationListener s. |
public void setPropertyResolved(boolean resolved)
ELResolver
has successfully resolved a given (base, property) pair. Use
setPropertyResolved(Object, Object)
if resolved is true and to notify EvaluationListener
s.
The CompositeELResolver
checks this property to determine whether it should consider or skip other component
resolvers.
resolved
- true if the property has been resolved, or false if not.CompositeELResolver
public void setPropertyResolved(java.lang.Object base, java.lang.Object property)
ELResolver
has successfully resolved a given (base, property) pair and to
notify the EvaluationListener
s.
The CompositeELResolver
checks this property to determine whether it should consider or skip other component
resolvers.
base
- The base objectproperty
- The property objectCompositeELResolver
public boolean isPropertyResolved()
ELResolver
has successfully resolved a given (base, property) pair.
The CompositeELResolver
checks this property to determine whether it should consider or skip other component
resolvers.
CompositeELResolver
public void putContext(java.lang.Class<?> key, java.lang.Object contextObject)
ELContext
.
The ELContext
maintains a collection of context objects relevant to the evaluation of an expression.
These context objects are used by ELResolver
s. This method is used to add a context object to that
collection.
By convention, the contextObject
will be of the type specified by the key
. However, this is
not required and the key is used strictly as a unique identifier.
key
- The key used by an @{link ELResolver} to identify this context object.contextObject
- The context object to add to the collection.java.lang.NullPointerException
- if key is null or contextObject is null.public java.lang.Object getContext(java.lang.Class<?> key)
The ELContext
maintains a collection of context objects relevant to the evaluation of an expression.
These context objects are used by ELResolver
s. This method is used to retrieve the context with the
given key from the collection.
By convention, the object returned will be of the type specified by the key
. However, this is not
required and the key is used strictly as a unique identifier.
key
- The unique identifier that was used to associate the context object with this ELContext
.java.lang.NullPointerException
- if key is null.public abstract ELResolver getELResolver()
ELResolver
associated with this context.
The ELContext
maintains a reference to the ELResolver
that will be consulted to resolve
variables and properties during an expression evaluation. This method retrieves the reference to the resolver.
Once an ELContext
is constructed, the reference to the ELResolver
associated with the
context cannot be changed.
public ImportHandler getImportHandler()
ImportHandler
associated with this ELContext
.public abstract FunctionMapper getFunctionMapper()
FunctionMapper
associated with this ELContext
.public java.util.Locale getLocale()
Locale
stored by a previous invocation to setLocale(java.util.Locale)
. If this method returns non
null
, this Locale
must be used for all localization needs in the implementation. The
Locale
must not be cached to allow for applications that change Locale
dynamically.Locale
in which this instance is operating. Used primarily for message localization.public void setLocale(java.util.Locale locale)
Locale
for this instance.
This method may be called by the party creating the instance, such as Jakarta Faces or Jakarta Server Pages, to
enable the Jakarta Expression Language implementation to provide localized messages to the user. If no
Locale
is set, the implementation must use the locale returned by Locale.getDefault( )
.
locale
- the locale for this instancepublic abstract VariableMapper getVariableMapper()
VariableMapper
associated with this ELContext
.public void addEvaluationListener(EvaluationListener listener)
listener
- The listener to be added.public java.util.List<EvaluationListener> getEvaluationListeners()
public void notifyBeforeEvaluation(java.lang.String expr)
expr
- The Jakarta Expression Language expression string to be evaluatedpublic void notifyAfterEvaluation(java.lang.String expr)
expr
- The Jakarta Expression Language expression string that has been evaluatedpublic void notifyPropertyResolved(java.lang.Object base, java.lang.Object property)
base
- The base objectproperty
- The property Objectpublic boolean isLambdaArgument(java.lang.String arg)
arg
- A possible Lambda formal parameter namepublic java.lang.Object getLambdaArgument(java.lang.String arg)
arg
- The formal parameter for the Lambda argumentpublic void enterLambdaScope(java.util.Map<java.lang.String,java.lang.Object> args)
args
- The Lambda arguments mappublic void exitLambdaScope()
public <T> T convertToType(java.lang.Object obj, java.lang.Class<T> targetType)
ELResolver
handles this conversion,
it is used. Otherwise the standard coercions is applied.
An ELException
is thrown if an error occurs during the conversion.
obj
- The object to convert.targetType
- The target type for the conversion.targetType
ELException
- thrown if errors occur.