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规范会自动加载该文件,则该文件定义的标签库也将生效。