jsp 如何自定义标签

系统 2108 0

数据库里存储的是long型的时间,现在想输出到jsp页面,由于使用的是jstl标签,而要显示的是可读的时间类型,找来找去有个fmt:formatDate可以转化,但是只能转date型,long型则不可以,思考了好久,又不想破环jsp页面这种标签结构,决定自己下个转换的标签,说干就干,开始干,参考网上jstl标签编写方法,如下:
第一步,写一个类继承TagSupport,实现doStartTag() 方法。

Java代码 复制代码   收藏代码
  1. public   class  DateTag  extends  TagSupport {   
  2.   
  3.      private   static   final   long  serialVersionUID = 6464168398214506236L;   
  4.        
  5.      private  String value;   
  6.        
  7.        
  8.      @Override   
  9.      public   int  doStartTag()  throws  JspException {   
  10.         String vv =  "" +value;   
  11.          long  time = Long.valueOf(vv);   
  12.         Calendar c = Calendar.getInstance();   
  13.         c.setTimeInMillis(time);   
  14.         SimpleDateFormat dateformat = new  SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );   
  15.         String s = dateformat.format(c.getTime());   
  16.          try  {   
  17.             pageContext.getOut().write(s);   
  18.         }  catch  (IOException e) {   
  19.             e.printStackTrace();   
  20.         }   
  21.          return   super .doStartTag();   
  22.     }   
  23.   
  24.   
  25.      public   void  setValue(String value) {   
  26.          this .value = value;   
  27.     }   
  28.        
  29.   
  30. }  
      public class DateTag extends TagSupport {

    private static final long serialVersionUID = 6464168398214506236L;
    
    private String value;
    
    
    @Override
    public int doStartTag() throws JspException {
        String vv = ""+value;
        long time = Long.valueOf(vv);
        Calendar c = Calendar.getInstance();
        c.setTimeInMillis(time);
        SimpleDateFormat dateformat =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String s = dateformat.format(c.getTime());
        try {
            pageContext.getOut().write(s);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return super.doStartTag();
    }


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

}


    



第二步。编写tld文件,datetag.tld

Xml代码 复制代码   收藏代码
  1. <? xml   version = "1.0"   encoding = "UTF-8" ?>   
  2. < taglib >   
  3.      < tlib-version > 1.0 </ tlib-version >   
  4.      < jsp-version > 1.2 </ jsp-version >   
  5.   
  6.      < tag >   
  7.          < name > date </ name >   
  8.          < tag-class > com.util.DateTag </ tag-class >            
  9.          < body-content > JSP </ body-content >   
  10.          < attribute >   
  11.              < name > value </ name >   
  12.              < required > true </ required >   
  13.              < rtexprvalue > true </ rtexprvalue >   
  14.          </ attribute >   
  15.      </ tag >   
  16. </ taglib >    
      <?xml version="1.0" encoding="UTF-8"?>
<taglib>
    <tlib-version>1.0</tlib-version>
    <jsp-version>1.2</jsp-version>

    <tag>
        <name>date</name>
        <tag-class>com.util.DateTag</tag-class>        
        <body-content>JSP</body-content>
        <attribute>
            <name>value</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
    </tag>
</taglib> 

    



第三步,在web.xml中加入引用

Xml代码 复制代码   收藏代码
  1. < taglib >          
  2.          < taglib-uri > /tags </ taglib-uri >     
  3.          < taglib-location > /WEB-INF/datetag.tld </ taglib-location >              
  4.      </ taglib >    
      <taglib>      
        <taglib-uri>/tags</taglib-uri> 
        <taglib-location>/WEB-INF/datetag.tld</taglib-location>          
    </taglib> 


    



第四步,在jsp页面开始使用

Java代码 复制代码   收藏代码
  1. <%@ taglib uri= "/tags"  prefix= "date" %>   
  2.   
  3. <date:date value= "${detail.sendTime}" />  
      <%@ taglib uri="/tags" prefix="date"%>

<date:date value="${detail.sendTime}"/>


    



即可以将long型时间转化为yyyy-MM-dd HH:MM:ss类型

 

在自己定义的标签处理类中:pageContext.getOut().write(s) ,write方法可以接受两个参数int,String,

如果想在页面输出,只能用String类型参数的write方法。

jsp 如何自定义标签


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论