目的:模仿 JSTL 的 <c:out>, 撰寫自己的 Tag(<mchen:out>)
所須步驟 1. 撰寫 TLD 2. 撰寫相對類別
以下的程序使用 NetBeans 6.1 為開發工具 撰寫 TLD 的步驟 1.1 在 NetBeans, 選 [File]-[New File], Categories 選 [Web] File Types 選 [Tag Library Descriptor] 1.2 [TLD Name]: tldtest [URI]: http://www.mchen.org/tldtest(您可以輸您任意的URL)
將產出的TLD 檔的修正如下
- <?xml version="1.0" encoding="UTF-8"?>
- <taglib version="2.0" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd">
- <tlib-version>1.0</tlib-version>
- <short-name>tldtest</short-name>
- <uri>[url=http://www.mchen.com/tldtest%3C]http://www.mchen.com/tldtest<[/url];/uri>
- <tag>
- <name>test</name>
- <tag-class>webtest.TagTest</tag-class>
- <body-content>empty</body-content>
- </tag>
- </taglib>
複製代碼
2. 撰寫相對類別 webtest.TagTest 必須implements javax.servlet.jsp.tagext.Tag 以下的程序為在 NetBeans 中建立類別的步驟 2.1 在 NetBeans 加入 import javax.servlet.jsp.tagext.*; 2.2 在 TagTest 內按右鍵, 選 [Insert Code]-[implement method] 2.3 將 TagTest 程式碼修正如下
- package webtest;
- import javax.servlet.jsp.*;
- import javax.servlet.jsp.tagext.*;
- public class TagTest implements Tag {
- private Tag parent;
- private PageContext pageContext;
- public int doEndTag() throws JspException {
- return this.SKIP_PAGE;
- }
- public int doStartTag() throws JspException {
- try {
- JspWriter out = pageContext.getOut();
- out.print("<font color='red'>Hello TagTest</font>");
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- return this.SKIP_BODY;
- }
- public Tag getParent() {
- return parent;
- }
- public void release() {
- }
- public void setPageContext(PageContext arg0) {
- this.pageContext = arg0;
- }
- public void setParent(Tag arg0) {
- this.parent = arg0;
- }
- }
複製代碼
接下來, 您就可以使用 Custom Tag 了 JSP 範例
- <%@page contentType="text/html" pageEncoding="UTF-8"%>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
- "http://www.w3.org/TR/html4/loose.dtd">
- <%@ taglib uri="http://www.mchen.com/tldtest" prefix="mchen" %>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>JSP Page</title>
- </head>
- <body>
- <mchen:test/>
- </body>
- </html>
複製代碼
|
沒有留言:
張貼留言