7.6.3 配置EL自定义函数
EL自定义函数必须在tld文件中进行配置才能使用。这个tld文件可以是任何文件名,但必须将tld文件放在<Web应用程序>\WEB-INF目录下或WEB-INF目录下的任何子目录(包括lib和classes目录)。
在本例中使用的tld文件是customfun.tld。该文件的内容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" version="2.1">
<tlib-version>1.0</tlib-version>
<jsp-version>2.1</jsp-version>
<description>自定义函数库</description>
<!-- 定义URI -->
<uri>http://www.sun.com/cfun1.0</uri>
<function>
<name>matches</name>
<function-class>chapter7.CustomFun</function-class>
<function-signature> java.lang.Boolean matches(java.lang.String,java.lang.String)</function-signature>
</function>
</taglib>
上面配置代码中的黑体字部分就是配置自定义函数的代码,而该文件的其他内容是配置了EL自定义函数库的其他信息。下面对这些配置信息做一下解释。
下面是配置EL自定义函数库的元素说明:
l <tablib>:该元素是tld文件的根结点。一般不需要改动。
2 <tlib-version>:该元素配置了函数库的版本,该版本号可根据实际情况指定。
3 <jsp-version>:该元素指定了当前标签库能够正常运行所需要的JSP的最低版本。
4 <description>:该元素表示描述当前标签库的信息。标签值可以是任意符合XML格式标准的字符。
5 <uri>:该元素指定了在JSP页面中引用该标签库的URI,也就是taglib指令的uri属性值。该元素值可以是任何符合XML格式标准的字符串,但一般该属性的值应设为网址(由于网址是全球唯一的,如果该函数库要对外发布,就可以大大降低URI冲突的可能性)。
下面是配置自定义函数的元素说明:
6 <function>:该元素定义了EL自定义函数。每一个<function>元素对应于一个EL自定义函数。
7 <name>:该元素指定了使用EL自定义函数时的名称。例如,${cfun:matches}。
8 <function-class>:该元素指定了Java静态方法所在的类名(package.classname)。
9 <function-signature>:该元素指定了Java静态方法的返回值类型、方法名和参数个数和类型。
上面的配置文件虽然比较复杂,但这些复杂的格式并不需要记忆。在Tomcat自带的例子中就有很多tld文件,读者可以搜索所有以.tld结尾的文件。并将其中任何一个文件的内容复制到自己的tld文件中,并根据需要修改文件的内容即可。