For each tag attribute that accepts a deferred value expression or a deferred method expression, the tag handler must have a method to access the value of the attribute.
The methods that access the value of a deferred value attribute method must accept a ValueExpression object. The methods that access the value of a deferred method attribute must accept a MethodExpression object. These methods take the form setXXX, where XXX is the name of the attribute.
The following example shows a method that can be used to access the value of a deferred value attribute called attributeName:
private javax.el.ValueExpression attributeName = null; public void setAttributeName( javax.el.ValueExpression attributeName) { this.attributeName = attributeName; }
Deferred value attributes and deferred method attributes are primarily used by JavaServer Faces technology. See Getting the Attribute Values for an example of creating a tag handler that processes these attributes for a JavaServer Faces application.
If you have an attribute that is both dynamic and deferred (meaning that the tag attribute definition accepts a deferred expression and has rtexprvalue set to true), then the setX method that accesses this value must accept an Object instance and test if the Object instance is a deferred value expression, as shown in this pseudocode:
public void setAttr(Object obj) { if (obj instance of ValueExpression) { // this is a deferred expression else { // this is an rtexpression } }