愚僧

          贏與輸的差別通常是--不放棄

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            23 Posts :: 0 Stories :: 2 Comments :: 0 Trackbacks


          步驟:
          1. 定義tld標簽描述文件
          2. 新建class繼承SimpleTagSupport或者BodyTagSupport
          3. taglib命令聲明
          4. 使用自定義標簽

          1. 定義tld標簽描述文件custom_tag.tld
          <?xml version="1.0" encoding="UTF-8"?>
          <taglib 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 http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
              version
          ="2.0">
              <description>JSTL 1.1 core library</description>
              <display-name>JSTL core</display-name>
              <tlib-version>1.1</tlib-version>
              <short-name>ct</short-name>
              <!-- 與 taglib 的 uri 對應 -->
              <uri>http://www.customtag.com/custom_tag</uri>
              <!-- 定義一個標簽 -->
              <tag>
                  <!-- 標簽的名稱 -->
                  <name>date</name>
                  <!-- 標簽類 -->
                  <tag-class>com.customtag.tags.DateTag</tag-class>
                  <!-- 標簽體 -->
                  <body-content>empty</body-content>
                  <attribute>
                      <!-- 屬性名稱 -->
                      <name>format</name>
                      <!-- 是否必選 true:必選 -->
                      <required>false</required>
                      <!-- 是否允許使用表達式(EL), false:不能使用 -->
                      <rtexprvalue>false</rtexprvalue>
                  </attribute>
                  <attribute>
                      <name>value</name>
                      <required>false</required>
                      <rtexprvalue>true</rtexprvalue>
                  </attribute>
              </tag>
          </taglib>
          注:
          可參考jstl-[version].jar中META-INF下的c.tld文件

          2. 新建DateTag繼承SimpleTagSupport或者BodyTagSupport
          package com.customtag.tags;

          import java.io.IOException;
          import java.text.SimpleDateFormat;
          import java.util.Date;

          import javax.servlet.jsp.JspException;
          import javax.servlet.jsp.JspWriter;
          import javax.servlet.jsp.PageContext;
          import javax.servlet.jsp.tagext.SimpleTagSupport;

          public class DateTag extends SimpleTagSupport {
              
              @Override
              public void doTag() throws JspException, IOException {
                  SimpleDateFormat sdf = new SimpleDateFormat(format);
                  PageContext pc = (PageContext) getJspContext();
                  JspWriter out = pc.getOut();
                  try{
                      if(null != this.getValue()){
                          out.print(sdf.format(new Date(this.getValue())));
                      }else{
                          out.print(sdf.format(new Date()));
                      }
                  }catch(IOException e){
                      throw e;
                  }catch(Exception e){
                      out.print("");
                  }
              }
              
              private String format="yyyy-MM-dd HH:mm:ss";
              
              private Long value = null;
              
              public String getFormat() {
                  return format;
              }

              public void setFormat(String format) {
                  this.format = format;
              }

              public Long getValue() {
                  return value;
              }

              public void setValue(Long value) {
                  this.value = value;
              }
              
          }

          3. taglib命令聲明
          <%@taglib prefix="ct" uri="http://www.customtag.com/custom_tag"%>

          4. 使用自定義標簽
          <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
          <%
              
          String path = request.getContextPath();
              
          String basePath = request.getScheme() + "://"
                      
          + request.getServerName() + ":" + request.getServerPort()
                      
          + path + "/";
          %>
          <%@taglib prefix="ct" uri="http://www.customtag.com/custom_tag"%>

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
          <html>
              <head>
                  <base href="<%=basePath%>">

                  <title>My JSP 'index.jsp' starting page</title>
                  <meta http-equiv="pragma" content="no-cache">
                  <meta http-equiv="cache-control" content="no-cache">
                  <meta http-equiv="expires" content="0">
                  <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
                  <meta http-equiv="description" content="This is my page">
                  <!--
                  <link rel="stylesheet" type="text/css" href="styles.css">
                  
          -->
              </head>

              <body>
                  自定義標簽測試 : 
                  <br>
                  <ct:date/><br/>
                  <ct:date format="MM/dd/yyyy"/><br/>
                  <ct:date format="yyyy年MM月dd日 HH時mm分ss秒" value="<%=new Date().getTime() %>"/><br/>
              </body>
          </html>

          [運行結果]
          自定義標簽測試:
          2013-03-04 16:18:29
          03/04/2013
          2013年03月04日 16時18分29秒
          posted on 2013-03-04 16:35 ywm 閱讀(122) 評論(0)  編輯  收藏 所屬分類: servlet & jspstruts
          主站蜘蛛池模板: 中卫市| 民乐县| 湘阴县| 甘泉县| 晴隆县| 景德镇市| 邹平县| 龙江县| 栖霞市| 迭部县| 定襄县| 德安县| 东平县| 射洪县| 石渠县| 安宁市| 广元市| 普宁市| 河东区| 宽城| 丽江市| 新野县| 泰宁县| 朔州市| 敦煌市| 蒙山县| 南阳市| 临城县| 武定县| 嘉兴市| 沧源| 绥德县| 政和县| 手游| 巴楚县| 邵武市| 盐津县| 伊吾县| 麻阳| 安平县| 德州市|