自定义标签 date

自定义标签 date


步骤:
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秒

你可能感兴趣的:(自定义标签 date)