java.lang.Object
jakarta.el.Expression
jakarta.el.MethodExpression
com.sun.faces.facelets.el.ContextualCompositeMethodExpression
- All Implemented Interfaces:
Serializable
public class ContextualCompositeMethodExpression
extends jakarta.el.MethodExpression
This specialized MethodExpression
enables the evaluation of composite component expressions. Instances
of this expression will be created when
TagAttributeImpl.getValueExpression(jakarta.faces.view.facelets.FaceletContext, Class)
is invoked and the expression represents a composite component expression (i.e. #{cc.[properties]}).
It's important to note that these MethodExpression
s are context sensitive in that they leverage the
location in which they were referenced in order to push the proper composite component to the evaluation context
prior to evaluating the expression itself.
Using Page test.xhtml --------------------------------- <ez:comp1 do="#{bean.action}" /> comp1.xhtml --------------------------------- <composite:interface> <composite:attribute name="do" method-signature="String f()" required="true" /> </composite:interface> <composite:implementation> <ez:nesting> <h:commandButton value="Click Me!" action="#{cc.attrs.do} /> </ez:nesting> </composite:implementation> nesting.xhtml --------------------------------- <composite:interface /> <composite:implementation> <composite:insertChildren> </composite:implementation>When
commandButton
is clicked, the ContextualCompositeMethodExpression
first is looked up
by TagAttributeImpl.AttributeLookupMethodExpression
which results an instance of
ContextualCompositeMethodExpression
. When this
ContextualCompositeMethodExpression
is invoked, the Location
object necessary to find the proper composite component will be derived from
source ValueExpression
provided at construction time.
Using the derived
Location
, we can find the composite component that matches 'owns' the template in which
the expression was defined in by comparing the path of the Location with the name and library of the
Resource
instance associated with each composite component. If a matching composite
component is found, it will be made available to the EL by calling
CompositeComponentStackManager.push(jakarta.faces.component.UIComponent)
.- See Also:
-
Constructor Summary
ConstructorDescriptionContextualCompositeMethodExpression
(jakarta.el.ValueExpression source, jakarta.el.MethodExpression delegate) ContextualCompositeMethodExpression
(Location location, jakarta.el.MethodExpression delegate) -
Method Summary
Modifier and TypeMethodDescriptionboolean
jakarta.el.MethodInfo
getMethodInfo
(jakarta.el.ELContext elContext) int
hashCode()
boolean
Methods inherited from class jakarta.el.MethodExpression
getMethodReference, isParametersProvided
-
Constructor Details
-
ContextualCompositeMethodExpression
public ContextualCompositeMethodExpression(jakarta.el.ValueExpression source, jakarta.el.MethodExpression delegate) -
ContextualCompositeMethodExpression
-
-
Method Details
-
getMethodInfo
public jakarta.el.MethodInfo getMethodInfo(jakarta.el.ELContext elContext) - Specified by:
getMethodInfo
in classjakarta.el.MethodExpression
-
invoke
- Specified by:
invoke
in classjakarta.el.MethodExpression
-
getExpressionString
- Specified by:
getExpressionString
in classjakarta.el.Expression
-
equals
- Specified by:
equals
in classjakarta.el.Expression
-
hashCode
public int hashCode()- Specified by:
hashCode
in classjakarta.el.Expression
-
isLiteralText
public boolean isLiteralText()- Specified by:
isLiteralText
in classjakarta.el.Expression
-