标签库描述文件
标签库描述文件(Tag Library Descriptor, TLD),采用XML文件格式,对标签库及库中的标签做了描述。
TLD文件中的元素可以分为3类,
- <taglib> —— 标签库元素
- <tag> —— 标签元素
- <attribute> —— 标签属性元素
标签库元素 <taglib>
标签库元素<taglib>用来设定标签库的相关信息,它的子元素如下:
- tlib-version —— 指定标签库的版本
- jsp-version —— 指定JSP的版本
- short-name —— 指定标签库默认的前缀名prefix
- uri —— 设定标签库的唯一访问标识符
- info —— 设定标签库的说明信息
标签元素 <tag>
标签元素<tag>元素用来定义一个标签,它的子元素如下:
- name —— 设定标签的名字
- tag-class —— 设定Tag的处理类
- body-content —— 设定标签主体的类型
- info —— 设定标签的说明信息
<body-content>子元素用于设定标签主体的类型,可选值包括:
- empty —— 标签主体为空
- scriptless —— 标签主体不为空,并且包括JSP的EL表达式和动作元素,但不能包含JSP的脚本元素。(动作元素指<jsp:include><jsp:forward>等action,脚本元素指<%! %>, <%% >, <%= %>这3种)
- jsp —— 标签主体不为空,并且包含JSP代码。在JSP代码中可包含EL表达式,动作元素和脚本元素
- tagdependant —— 标签主体不为空,并且标签主体内容由标签处理类来解析和处理。标签主体的所有代码都会原封不动地传给便签处理类,而不是把标签主体的执行结果传给标签处理类
标签属性元素 <attribute>
用来描述标签的属性,<attribute>元素的子元素如下:
- name —— 属性名称
- required —— 属性是否是必须的,默认为false
- rtexprvalue _—— 属性值是否可以为基于“<%= %>”形式的Java表达式或EL表达式;若为false,只能为普通的字符串;(runtime expression value)
标签库描述文件示例
<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.1" xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd ">
<tlib-version>1.1</tlib-version>
<jsp-version>2.1</jsp-version>
<short-name>mytaglib</short-name>
<uri>/mytaglib</uri>
<tag>
<name>message</name>
<tag-class>com.gof.test.taglib.MessageTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>key</name>
<required>true</required>
</attribute>
</tag>
</taglib>
发布标签库,注册TLD
假设我们在WEB-IN/下添加一个tld文件mytablig.tld文件:
在web.xml中:
<!-- taglib configuration -->
<jsp-config>
<taglib>
<taglib-uri>/mytaglib</taglib-uri>
<taglib-location>/WEB-INF/mytaglib.tld</taglib-location>
</taglib>
</jsp-config>
在应用的JSP文件中:
*.jsp
<%@ taglib uri="/mytaglib" prefix="mm" %>
uri的值应该与tld描述文件中的值保持一致。
如果使用第三方开发的标签库,请参见 使用第三方标签库 一节。