2.8.2 建立TLD文件
2.8.2 建立TLD文件
TLD
是Tag Library Definition
的缩写,即标签库定义,文件的后缀是td
,每个TLD
文件对应一个标签库,一个标签库中可包含多个标签。TLD
文件也称为标签库定义文件.
标签库定义文件的根元素是taglib
,它可以包含多个tag
子元素,每个tag
子元素都定义一个标签。通常可以到web
容器下复制一个标签库定义文件,并在此基础上进行修改即可。例如Tomcat8.5
,在\webapps\examples\WEB-INF\jsp2\
路径下包含了一个jsp2-example-taglib.tld
文件,这就是一个TLD
文件的范例。
将该文件复制到Web
应用的WEB-INF
路径,或WEB-NF
的任意子路径下,并对该文件进行简单修改,修改后的mytaglib.tld
文件代码如下。
1 |
|
上面的标签库定义文件也是一个标准的XML
文件,该XML
文件的根元素是taglib
元素,因此每次编写标签库定义文件时都直接添加该元素即可.
taglib标签子元素
taglib
下有如下三个子元素。
taglib-version
:指定该标签库实现的版本,这是一个作为标识的内部版本号,对程序没有太大的作用。short-name
:该标签库的默认短名,该名称通常也没有太大的用处。uri
:这个属性非常重要,它指定该标签库的URI
,相当于指定该标签库的唯一标识。如上面粗体字代码所示,JSP
页面中使用标签库时就是根据该URI
属性来定位标签库的。
tag标签子元素
除此之外,taglib
元素下可以包含多个tag
元素,每个tag
元素定义一个标签,tag
元素下允许出现如下常用子元素:
name
:该标签的名称,这个子元素很重要,JSP
页面中就是根据该名称来使用此标签的。tag-class
:指定标签的处理类,毋庸置疑,这个子元素非常重要,它指定了标签由哪个标签处理类来处理。body-content
:这个子元素也很重要,它指定标签体内容。该子元素的值可以是如下几个。tagdependent
:指定标签处理类自己负责处理标签体。empty
:指定该标签只能作为空标签使用。scriptless
:指定该标签的标签体可以是静态HTML
元素、表达式语言,但不允许出现JSP
脚本JSP
:指定该标签的标签体可以使用JSP
脚本。
dynamic-attributes
:指定该标签是否支持动态属性。只有当定义动态属性标签时才需要该子元素。
因为JSP2
规范不再推荐使用JSP
脚本,所以JSP2
自定义标签的标签体中不能包含JSP
脚本。所以,实际上tag元素的body-content
子元素的值不可以是JSP
.
定义了上面的标签库定义文件后,将标签库文件放在web
应用的WEB-INF
路径或任意子路径下java Web
规范会自动加载该文件,则该文件定义的标签库也将生效。