愚僧

          贏與輸?shù)牟顒e通常是--不放棄

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

          2013年3月4日 #



          步驟:
          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 對應(yīng) -->
              <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>

          [運行結(jié)果]
          自定義標簽測試:
          2013-03-04 16:18:29
          03/04/2013
          2013年03月04日 16時18分29秒
          posted @ 2013-03-04 16:35 ywm 閱讀(122) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 昌乐县| 安西县| 长泰县| 刚察县| 仁寿县| 肇州县| 唐山市| 安康市| 祁东县| 廊坊市| 莒南县| 安塞县| 左权县| 中山市| 万宁市| 平果县| 盐津县| 内江市| 沙坪坝区| 清徐县| 巴林右旗| 塘沽区| 西贡区| 得荣县| 沙坪坝区| 调兵山市| 锡林浩特市| 临湘市| 宁海县| 加查县| 葫芦岛市| 台中县| 洪泽县| 米脂县| 友谊县| 徐汇区| 宣恩县| 定西市| 英吉沙县| 鸡泽县| 敦化市|