使用TAG标签

<%@ taglib uri=”/WEB-INF/tutorial-template.tld” prefix=”tt” %>

tag标签类型
一、简单的tag标签 <tt:simple />
二、带属性的tag标签 <loglic:present parameter=”Clear”>
三、带body的tag标签
<logic:present parameter=”Clear”>
<% cart.clear(); %>
<font color=”#ff0000” size=”+2”><strong>
你选择了清除购物车!
</strong></font>
</logic:present>
四、定义脚本变量的tag标签
<tt:lookup id=”tx” type=”UserTransaction” name=”java:comp/UserTransaction” />
<% tx.begin(); %>
五、具有协作关系的tag标签
<tt:tag1 attr1=”obj1” value1=”value” />
<tt:tag2 attr1=”obj1” />

Tag处理类
从TagSupport或BodyTagSupport类中继承,这些类或接口都可以在javax.servlet.jsp.tagext包
doStartTag方法来处理tag标签的开头,调用doEndTag方法来处理tag标签的结束
Tag处理类的方法
Tag标签类型 所调用的方法
一、基本标签 doStartTag, doEndTag, release
二、带属性的标签 doStartTag, doEndTag, set/getAttribute1…N, release
三、带内容的标签 doStartTag, doEndTag, release
四、带内容的标签,且内容重复循环 doStartTag, doAfterBody, doEndTag, release
五、带内容的标签,且内容与JSP交互 doStartTag, doEndTag, release, doInitBody, doAfterBody, release
一个tag处理类可以通过javax.servlet.jsp.PageContext来与JSP交互,通过javax.servlet.jsp.PageContext类,tag处理类可以访问JSP中的request、session和application对像。
如果tag标签是互相嵌套的,那内层的tag处理类可以通过它的parent属性来访问上层的tag处理类。
一般情况都将所有的tag处理类打成了JAR的包,以便于发布。

TLD必须以<taglib>来作为它的根元素,<taglib>的子元素如下表:
<taglib>的子元素
Element Description
tlib-version Tag库的版本
jsp-version Tag库所需要的jsp的版本
short-name 助记符,tag的一个别名(可选)
Uri 用于确定一个唯一的tag库
display-name 被可视化工具(诸如Jbuilder)用来显示的名称(可选)
small-icon 被可视化工具(诸如Jbuilder)用来显示的小图标(可选)
large-icon 被可视化工具(诸如Jbuilder)用来显示的大图标(可选)
Description 对tag库的描述(可选)
Listener 参见下面listener元素

Tag 参见下面tag 元素
Listener元素 一个tag库可能定义一些类做为它的事件侦听类,这些类在TLD中被称为listener 元素,jsp服务器将会实例化这些侦听类,并且注册它们。Listener元素中有一个叫listener-class的子元素,这个元素的值必须是该侦听类的完整类名。
Tag元素 每个tag元素在tag库中都要指出它的名字、类名、脚本变量、tag的属性。其中脚本变量的值可以直接在TLD中定义或通过tag附加信息的类来取得。每个属性描述了这个属性是否可以省略,它的值是否可以通过<%= …%>这样的JSP语法来获得,以及属性的类型。
每一个tag在TLD中对应一个tag元素,下表是tag元素的子元素:
Tag元素的子元素
元素名称 描述
Name 独一无二的元素名
tag-class Tag标签对应的tag处理类
tei-class javax.servlet.jsp.tagext.TagExtraInfo的子类,用于表达脚本变量(可选)
body-content Tag标签body的类型
display-name 被可视化工具(诸如Jbuilder)用来显示的名称(可选)
small-icon 被可视化工具(诸如Jbuilder)用来显示的小图标(可选)
large-icon 被可视化工具(诸如Jbuilder)用来显示的大图标(可选)
Description 此tag标签的描述
Variable 提供脚本变量的信息(同tei-class)(可选)
Attribute Tag标签的属性名

简单的tag处理类

简单的tag处理类必须实现Tag接口的doStartTag和doEndTag方法。当jsp引擎碰到tag标签的开头时,doStartTag被调用,因为简单的tag没有body,所以此方法将返回 SKIP_BODY。当jsp引擎碰到tag标签的结尾时,doEndTag被调用,如果余下的页面还要被计算,那它将返回EVAL_PAGE,否则将会返回SKIP_PAGE。
以下是例子:对于标签 <tt:simple /> ,它的tag处理类实现如下:
public SimpleTag extends TagSupport
{
public int doStartTag() throws JspException
{
try{
pageContext.getOut().print(“Hello.”);
}catch(Exception e){
throw new JspTagException(“SimpleTag: “ + e.getMessage());
}
return SKIP_BODY;
}
public int doEndTag()
{
return EVAL_PAGE;
}
}
注意:如果tag标签没有内容的话,那必须定义body-content元素为空,例如
<body-content>empty</body-content>

带属性的tag标签

tag处理类

对于tag标签的每个属性,你必须依照JavaBeans规范来定义其属性,以及get和set方法。以struts的logic:present 标签为例,
<logic:present parameter=”Clear”>
与此相应,此tag处理类应有如下方法和定义:
protected String parameter = null;
public String getParameter()
{
return this.parameter;
}

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部