Jsp自定義標籤 二 tld 詳解

從jsp1.1開始就可以在jsp頁面中使用自定義標籤了,使用自定義標籤不但可以實現代碼重用,而且可以使jsp代碼更簡潔。Jsp2.0的標籤擴展API中又增加了SimpleTag接口和其實現類SimpleTagSupport。

TLD文件元素詳解:

每個自定義標籤都必須在TLD文件中聲明,TLD文件只不過是一個XML文件。根元素是<taglib>,它包含一個或者多個<tag>標籤,該元素用來聲明定製標籤。<taglib>元素中只有<tlib-version>元素是必須的,其他都是可選的。

TLD文件中的元素

標  籤

含  義

<taglib>

TLD文件的根元素

<tlib-version>

此標籤庫的版本

<jsp-version>

此標籤庫依賴的JSP版本。

<short-name>

 

<description>

<display-name>

<icon>

<uri>

<validator>

<listener>

<function>

當在JSP中使用標籤時,此標籤庫首選或者建議的前綴。當然可以完全忽略這個建議

描述信息

圖形工具可顯示的一個簡短名稱

圖形工具可顯示的圖標

指定使用該標籤庫中標籤的URI

關於該庫的TagLibraryValidator信息

指定事件監聽器類

定義一個在EL中使用的函數

<tag>

定義一個標籤

<tag>元素的子元素

標  籤

含  義

<description>

<display-name>

<icon>

<name>

指定針對標籤的信息

開發工具用於顯示的一個簡短名稱

可被開發工具使用的圖標

標籤名稱

<tag-class>

 

<tei-class>

Java標籤處理器類的名稱。注意這是處理器類的全限定名稱,比如com.xx.tag.TableTag

Javax.servlet.jsp.tagext.TagExtraInfo類的一個可選子類

<body-content>

 

<variable>

<example>

此標籤的主體部分的內容。其值可爲scriptless\tagdependent\empty,默認爲empty

定義腳本變量信息

使用該標籤例子的可選的非正式描述

<attribute>

包含了此標籤的一個屬性的元數據

<attribute>的子元素

標  籤

含  義

<description>

<name>

有關描述的文本信息

在jsp標籤中使用的屬性名稱

<required>

 

 

<rtexprvalue>

 

 

<type>

指定屬性是必須的還是可選的,默認爲false,表示屬性可選。如果該值爲true,則jsp頁面必須爲該屬性提供一個值。可能的值true、false、yes、no

指定屬性是否能接受請求時表達式的值,默認爲false,表示不能接受請求時表達式的值。可能值:true、false、yes、no

屬性的數據類型,該元素只能用在當<rtexprvalue>設置爲true時。它指定當使用請求時屬性表達式(<%= %>)返回類型。默認string

 

下面舉例詳解。



<description>;我在test.jsp 頁面寫了 <ex:hello /> 後,我把鼠標放在該標籤上時提示 description中的內容。

 

body-content取值的意義

body-content的值有下面4種:

<xsd:enumeration value="tagdependent"/>

    <xsd:enumeration value="JSP"/>

    <xsd:enumeration value="empty"/>

    <xsd:enumeration value="scriptless"/>

 

 

tagdependent:標籤體內容直接被寫入BodyContent,由自定義標籤類來進行處理,而不被JSP容器解釋,

如下:

<test:myList>

select name,age from users

</test:myList>

 

JSP:接受所有JSP語法,如定製的或內部的tag、scripts、靜態HTML、腳本元素、JSP指令和動作。如: 這種很好理解

<my:test>

    <%=request.getProtocol()%>      // 

</my:test>

具體可參考後面附源碼。

 

empty:空標記,即起始標記和結束標記之間沒有內容。 這種很好理解

下面幾種寫法都是有效的,

<test:mytag />

<test:mytag uname="Tom" />

<test:mytag></test:mytag>

 

scriptless:接受文本、EL和JSP動作。如上述使用<body-content> scriptless </body-content>則報錯,具體可參考後面附源碼。

經過 我的測試這幾個選項值不能隨意寫。具體情況而定。

標籤擴展API層次結構:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章