上一篇 [JAVA] Tag 自訂標籤簡介 大致介紹了 Tag 自訂標籤 的方便性, 及如何使用, 現在就來看如何撰寫 Tag 自訂標籤 及 如何在 JSP 網頁上, 使用自己撰寫的 Tag 標籤
Step1: 撰寫 Tag 的 Java 程式檔: jsDemoTag.java
package com.demos.tag;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.BodyTagSupport;
public class jsDemoTag extends BodyTagSupport {
@Override
public int doEndTag() throws JspException {
// TODO Auto-generated method stub
try {
StringBuffer sb = new StringBuffer();
// 利用 pageContext Object 取得 JSP 網頁輸出資料流 .getOut() , 才能將產生的 Java Script 寫到客戶端
JspWriter out = pageContext.getOut();
// 利用 BodyContent Objext 及 getBodyContent() 函式取得資料
BodyContent bodyContent = getBodyContent();
if( bodyContent!=null ){
String bodyMessage = bodyContent.getString();
sb.append("<script language=\"javascript\"> \n \n");
sb.append("alert('"+ bodyMessage.trim() +"');");
sb.append(" \n</script> \n");
// 將資料寫回客戶端
out.write(sb.toString());
}
} catch (Exception e) {
// TODO: handle exception
System.err.print(e);
}
return EVAL_PAGE;
}
}
Step2: 建立標籤程式庫描述元 demo.tld , 並放在 WEB-INF 目錄下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_1.dtd" >
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>demo</shortname>
<info>Demo Customization Tag </info>
<tag>
<name>message</name>
<tagclass>com.demos.tag.jsDemoTag</tagclass>
<info>Display Alert Box</info>
</tag>
</taglib>
tld檔中, 在<attribute> </attribute>中可設定 name, required, rtexprvalue 等三個屬性條件,<required>用來指定屬性是否一定要使用,若設定為true,則一定要使用指定的屬性,設定為false表示屬性為可選的(optional),<rtexprvalue>用來表示屬性指定時,是否可以使用表示式等動態屬性,例如 EL ${param.who}這樣的指定,如果設定為true表示可以,設定為false表示必須為靜態屬性。
Step3: 建立 JSP 網頁 HelloTag.jsp 來測試
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="uDemo" uri="/WEB-INF/demo.tld"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Demo Customization Tag Library</title>
</head>
<body>
<uDemo:message>Hello Tag !! This is first Tag Library</uDemo:message>
</body>
</html>
沒有留言:
張貼留言