~~ Licensed to the Apache Software Foundation (ASF) under one or more | |
~~ contributor license agreements. See the NOTICE file distributed with | |
~~ this work for additional information regarding copyright ownership. | |
~~ The ASF licenses this file to You under the Apache License, Version 2.0 | |
~~ (the "License"); you may not use this file except in compliance with | |
~~ the License. You may obtain a copy of the License at | |
~~ | |
~~ http://www.apache.org/licenses/LICENSE-2.0 | |
~~ | |
~~ Unless required by applicable law or agreed to in writing, software | |
~~ distributed under the License is distributed on an "AS IS" BASIS, | |
~~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
~~ See the License for the specific language governing permissions and | |
~~ limitations under the License. | |
------ | |
Attributes | |
------ | |
Attributes | |
Tags has attributes. Attribute behavior is different from a property, | |
so it is necessary to use a different annotation/doclet to use it. | |
Usually tags are written by users, but has few attributes and does not | |
have a complex hierarchy, so it is not necessary make tags inherit | |
attributes from other tags. | |
The objective of use @JSFJspTag and @JSFJspAttribute annotation/doclet is | |
make easier keep synchronized the .tld file with the tag class. | |
* Attribute loaded from basic type | |
On jsf 1.1 and in some special cases, no ValueExpressions are allowed | |
on some attribute. | |
------------------- | |
/** | |
* On tlds this is translated to something like: | |
* | |
* <attribute> | |
* <description><![CDATA[Some description]]></description> | |
* <name>var</name> | |
* <required>false</required> | |
* <rtexprvalue>false</rtexprvalue> | |
* <type>java.lang.String</type> | |
* </attribute> | |
* | |
*/ | |
@JSFJspAttribute | |
public void setVar(String var) | |
{ | |
// .... some code .... | |
} | |
------------------- | |
* Attribute loaded from ValueExpression | |
There are two cases | |
------------------- | |
/** | |
* On jsf 1.1 this translates to something like: | |
* | |
* Works on version 1.0.2, but some jsf 1.2 tld templates translate it to: | |
* | |
* <attribute> | |
* <description><![CDATA[The fully qualified class name of the ActionListener class.]]></description> | |
* <name>type</name> | |
* <required>false</required> | |
* <deferred-value> | |
* <type>java.lang.String</type> | |
* </deferred-value> | |
* </attribute> | |
* | |
* On version 1.0.3 this should be translated to something like: | |
* | |
* <attribute> | |
* <description><![CDATA[The fully qualified class name of the ActionListener class.]]></description> | |
* <name>type</name> | |
* <required>false</required> | |
* <rtexprvalue>true</rtexprvalue> | |
* </attribute> | |
* | |
* But this depends on the template used to generate its tld. | |
**/ | |
@JSFJspAttribute(className = "java.lang.String", rtexprvalue = true) | |
public void setType(ValueExpression type) | |
{ | |
// .... some code .... | |
} | |
/** | |
* Works on version 1.0.3 and upper for jsf 1.2 and upper tld templates: | |
* | |
* <attribute> | |
* <description><![CDATA[The fully qualified class name of the ActionListener class.]]></description> | |
* <name>type</name> | |
* <required>false</required> | |
* <deferred-value> | |
* <type>java.lang.String</type> | |
* </deferred-value> | |
* </attribute> | |
**/ | |
@JSFJspAttribute(deferredValueType = "java.lang.String") | |
public void setType(ValueExpression type) | |
{ | |
// .... some code .... | |
} | |
------------------- | |
* Attribute loaded from MethodExpression | |
------------------- | |
/** works on version 1.0.3 and upper for jsf 1.2 and upper tld templates **/ | |
@JSFJspAttribute(required=true, | |
deferredMethodSignature = "void myMethod(javax.faces.context.FacesContext, java.io.OutputStream)") | |
public void setMethod(MethodExpression method) | |
{ | |
_method = method; | |
} | |
------------------- |