使用此tag有點像include和import一樣
將程式嵌入到JSP中
但不同是可以建立可重複利用的功能
且開發人員無需撰寫太複雜的tag
就可以達到自訂標籤的功用
製作tag file的方法:
1.將被嵌入檔案rename為副檔名為.tag的檔案
要嵌入的檔案myTag.jsp
改成myTag.tag
2.將tag file放在web-inf目錄下,名為tags的目錄
3.在JSP中加上taglib指令,呼叫這個標籤
<%@ taglib prefix="testTags" tagdir="/WEB-INF/tags" %>
<testTags:myTag />
參數傳遞
因為這裡把嵌入檔改成tag了
所以參數在這裡來說變成了屬性
但使用tag file呼叫
範圍會被限制在tag裡面本身
也就是裡面的屬性,只要在tag外的就無法在被呼叫
而使用include則都可以使用
在JSP呼叫
<jsp:include page="myTag.jsp">
<jsp:param name="title" value="this is test tag context"
</jsp:include>
//for tag
<testTags:myTag title="this is test tag context" />
//${title}只能在<testTags裡面使用>
在tag file使用
<em><strong>${param.title}</strong></em>
//for tag
<em><strong>${title}</strong></em>
標籤屬性設定
tag file可以將相關的屬性設定在被嵌入檔裡面(即myTag.tag)
使用attribute,類似像TLD中tag的attribute的設定
myTag.tag
<%@ attribute name="title" require="true" rtexprvalue="true" %>
<em><strong>${title}</strong></em>
在JSP中使用
<testTags:myTag title="this is test tag context" />
//這裡因為require已經設為true
//代表使用此tag一定要有title這個屬性
body-content
當屬性內容很多的時候
tag file提供了jsp:doBody的設定
這樣一來可以直接給標籤一個body去做設計
myTag.tag
<em><strong><jsp:doBody/></strong></em>
JSP
<testTags:myTag>
this is test tag context
<testTags:myTag/>
tag file也提供了body-content可以設定body的型別
預設值為scriptless(不可以有scripting元素)
也可以設定成empty(body為空)
tagdependent(純文字)
myTag.tag
<%@ attribute name="color" require="true" rtexprvalue="true" %>
<%@ tag body-content="tagdependent" %>
<em><strong><font color="${color}"><jsp:doBody/></font></strong></em>
JSP
//jsp:doBody和attribute還是可以一起使用
//在這段body新增了一個color的屬性
<testTags:myTag color="#666666">
this is test tag context
<testTags:myTag/>
tag file可放置的位置
今天先整理到這裡
自訂標籤的功能因為很多
所以有點複雜
明天會繼續介紹另外兩個tag