要想让一个自定义标签具有属性,通常需要完成两个任务:
*
在标签处理器中编写每个属性对应的setter方法
*
在TLD文件中描术标签的属性
为自定义标签定义属性时,每个属性都必须按照JavaBean的属性命名方式, 标签处理器中定义属性名对应的setter方法,用来接收JSP页面调用自定义标签时传递进来的属性值。 例如属性url, 在标签处理器类中就要定义相应的setUrl(String url)方法。
在标签处理器中定义相应的set方法后,JSP引擎在解析执行开始标签前,也就是调用doStartTag方法前,会调用set属性方法,为标签设置属性(注意:只支持八种基本类型数据的自动转换)
<tag>元素的<attribute>
子元素用于描述自定义
标签的一个属性,自定义标签所具有的每个属性
都要对应一个<attribute>
元素 。
<attribute>
<description>description</description>
<name>aaaa</name>
<required>
true</required>
<rtexprvalue>
true</rtexprvalue>
<type>ObjectType</type>
</attribute>
用自定义标签定义属性输出一个书签实体count次:jspd代码:<html>
<head>
</head>
<body>
<simpleTag:SimpleDemo5 count=
"5">
啊说呱唧呱唧<Br>
</simpleTag:SimpleDemo5>
</body>
</html>
tld文件:
<tag>
<name>SimpleDemo5</name>
<tag-
class>web.simpleTag.SimpleDemo5</tag-
class>
<body-content>scriptless</body-content>
<attribute>
<name>count</name>
<required>yes</required>
<rtexprvalue>yes</rtexprvalue>
</attribute>
</tag>
Java代码:
public class SimpleDemo5 extends SimpleTagSupport{ private int count; public void setCount(int count) { this.count=count; } @Override public void doTag() throws JspException, IOException { JspFragment jf=this.getJspBody(); for(int i=0;i<count;i++){ jf.invoke(this.getJspContext().getOut()); } }