Class ContextualCompositeValueExpression

java.lang.Object
jakarta.el.Expression
jakarta.el.ValueExpression
com.sun.faces.facelets.el.ContextualCompositeValueExpression
All Implemented Interfaces:
Serializable

public final class ContextualCompositeValueExpression extends jakarta.el.ValueExpression

This specialized ValueExpression 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 ValueExpressions 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.

Here's an example:
 Using Page test.xhtml
 ---------------------------------
    <ez:comp1 greeting="Hello!" />


 comp1.xhtml
 ---------------------------------
 <composite:interface>
    <composite:attribute name="greeting" type="java.lang.String" required="true" />
 </composite:interface>
 <composite:implementation>
    <ez:nesting>
       <h:outputText value="#{cc.attrs.greetings}" />
    </ez:nesting>
 </composite:implementation>

 nesting.xhtml
 ---------------------------------
 <composite:interface />
 <composite:implementation>
    <composite:insertChildren>
 </composite:implementation>
 

In the above example, there will be two composite components available to the runtime: ez:comp1 and ez:nesting.

When <h:outputText value="#{cc.attrs.greeting}" />, prior to attempting to evaluate the expression, the Location object will be used to find the composite component that '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 Details

    • ContextualCompositeValueExpression

      public ContextualCompositeValueExpression()
    • ContextualCompositeValueExpression

      public ContextualCompositeValueExpression(Location location, jakarta.el.ValueExpression originalVE)
  • Method Details

    • getValue

      public Object getValue(jakarta.el.ELContext elContext)
      Specified by:
      getValue in class jakarta.el.ValueExpression
    • setValue

      public void setValue(jakarta.el.ELContext elContext, Object o)
      Specified by:
      setValue in class jakarta.el.ValueExpression
    • isReadOnly

      public boolean isReadOnly(jakarta.el.ELContext elContext)
      Specified by:
      isReadOnly in class jakarta.el.ValueExpression
    • getType

      public Class<?> getType(jakarta.el.ELContext elContext)
      Specified by:
      getType in class jakarta.el.ValueExpression
    • getExpectedType

      public Class<?> getExpectedType()
      Specified by:
      getExpectedType in class jakarta.el.ValueExpression
    • getExpressionString

      public String getExpressionString()
      Specified by:
      getExpressionString in class jakarta.el.Expression
    • equals

      public boolean equals(Object o)
      Specified by:
      equals in class jakarta.el.Expression
    • hashCode

      public int hashCode()
      Specified by:
      hashCode in class jakarta.el.Expression
    • isLiteralText

      public boolean isLiteralText()
      Specified by:
      isLiteralText in class jakarta.el.Expression
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getLocation

      public Location getLocation()
      Returns:
      the Location of this ValueExpression