Package com.sun.faces.facelets.el
Class ContextualCompositeMethodExpression
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 MethodExpressions 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
ConstructorsConstructorDescriptionContextualCompositeMethodExpression(jakarta.el.ValueExpression source, jakarta.el.MethodExpression delegate) ContextualCompositeMethodExpression(Location location, jakarta.el.MethodExpression delegate) -
Method Summary
Modifier and TypeMethodDescriptionbooleanjakarta.el.MethodInfogetMethodInfo(jakarta.el.ELContext elContext) inthashCode()booleanMethods 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:
getMethodInfoin classjakarta.el.MethodExpression
-
invoke
- Specified by:
invokein classjakarta.el.MethodExpression
-
getExpressionString
- Specified by:
getExpressionStringin classjakarta.el.Expression
-
equals
- Specified by:
equalsin classjakarta.el.Expression
-
hashCode
public int hashCode()- Specified by:
hashCodein classjakarta.el.Expression
-
isLiteralText
public boolean isLiteralText()- Specified by:
isLiteralTextin classjakarta.el.Expression
-