如果將 Tag File 的 .tag 檔案放在 /WEB-INF/tags 資料夾或子資料夾,並在 JSP 中使用 taglib
指示元素的 tagdir
屬性指定 .tag 的位置,你就可以使用 Tag File 了。其他人如果覺得你的 Tag File 不錯用,也只要將 .tag
複製到他們的 /WEB-INF/tags 資料夾或子資料夾就可以了。
Java 程式設計人員也許就是偏好使用 JAR 檔把東西包一包再給別人使用,或是為了跟 Simple Tag 等自訂標籤庫一起包起來。如果要將 Tag File 包成 JAR 檔案,那麼有幾個地方要注意一下:
- *.tag 檔案必須放在 JAR 檔的 META-INF/tags 資料夾或子資料夾下。
- 要定義 TLD(Tag Library Description)檔案。
- TLD 檔案必須放在 JAR 檔的 META-INF/TLDS 資料夾下。
例如想將先前開發的 Errors.tag、Header.tag、Html.tag 封裝在 JAR 檔案中,則要將這三個 .tag 檔案放到某個資料夾的 META-INF/tags 下,並在 META-INF/TLDS 下定義 html.tld 檔案:
html.tld
<?xml version="1.0" encoding="UTF-8"?>
<taglib xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="2.1">
<tlib-version>1.0</tlib-version>
<short-name>html</short-name>
<uri>https://openhome.cc/html</uri>
<tag-file>
<name>Header</name>
<path>/META-INF/tags/Header.tag</path>
</tag-file>
<tag-file>
<name>Html</name>
<path>/META-INF/tags/Html.tag</path>
</tag-file>
<tag-file>
<name>Errors</name>
<path>/META-INF/tags/Errors.tag</path>
</tag-file>
</taglib>
其中 <uri>
設定是在 JSP 中與 taglib
指示元素的 url
屬性對應用的。每個 <tag-file>
中使用 <name>
定義了自訂標籤的名稱,使用 <path>
定義了 *.tag 在 JAR 檔案中的位置。接下來可以使用文字模式進入放置 META-INF 的資料夾中,執行以下指令產生 html.jar:
jar cvf ../html.jar *
若要使用產生的 html.jar,就要將它放到 Web 應用程式的 WEB-INF/lib資 料夾中,而要使用標籤的 JSP 頁面,則可以如下撰寫:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="html" uri="https://openhome.cc/html" %>
<html:Html title="新增書籤">
<html:Errors/>
<form method="post" action="add">
網址 http:// <input name="url" value="${param.url}"><br>
網頁名稱:<input name="title" value="${param.title}"><br>
分 類:<input type="text" name="category" value="${param.category}"><br>
<input value="送出" type="submit"><br>
</form>
</html:Html>
注意!這次是使用 taglib
指示元素的 uri
屬性,名稱對應至 TLD 檔案中的 <uri>
設定的名稱。