王晓斌的专栏

Take honour from me and my life is undone.

【Java.Web】JSP —— 标签库taglib —— 自定义JSP标签 —— 标签库描述文件 TLD,发布

标签库描述文件

标签库描述文件(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描述文件中的值保持一致


如果使用第三方开发的标签库,请参见 使用第三方标签库 一节。








阅读更多
文章标签: Java Web
个人分类: Java.Web
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭