今天在公司的一个项目中看到一个很有意思的代码(也有可能是我孤陋寡闻,反正我是第一次见到)和大家分享一下。
做过java标签开发的人都应该对tld文件不陌生,TLD(标签库描述符)文件,每个标签都必须在一个TLD文件中声明,而且这一文件还必须连同标签的Java处理器类一起被部署。它大体的结构一般为:
<tag>
<name>showUserInfo</name>
<tag-class>com.mytags.UserInfoTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>flag</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
可是我今天却看到了不一样的定义格式如下:
<function>
<name>show</name>
<function-class>com.mytags.UserInfo</function-class>
<function-signature>java.lang.Boolean func(java.lang.String,.java.lang.String)</function-signature>
</function>
看到这里后我一头雾水,什么情况呀?还可以这样?……
自己开始百度了一下,才知道原来在tld文件中也可把一个类的方法描述出来,提供给EL表达式调用,不过这个方法好像只能是静态的方法,页面中用EL表达式的调用方法是:
${**:show(“test1”, 'test2') },注意:**代表你tld文件中定义的<short-name>的值。
2013/9/5 在此做个记录