資料庫裡存儲的是bigint型的時間,entity實體中存放的是long類型的标簽,現在想輸出到jsp頁面,由于使用的是jstl标簽,而要顯示的是可讀的時間類型,找來找去有個 fmt:formatDate可以轉化,但是隻能将String類型的轉成date型,long型則不可以,思考了好久,又不想破環jsp頁面這種标簽結構,參考網上jstl标簽編寫方法,如下:
第一步 寫一個類繼承TagSupport,實作doStartTag() 方法。
package com.vipshop.scheduler.util; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Calendar; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.TagSupport; 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,放在/WEB-INF目錄下
<? 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.vipshop.scheduler.util.DateTag </ tag-class > < body-content > JSP </ body-content > < attribute > < name > value </ name > < required > true </ required > < rtexprvalue > true </ rtexprvalue > </ attribute > </ tag > </ taglib > |
第三步 在web.xml中加入引用
< jsp-config > < taglib > < taglib-uri > /tags </ taglib-uri > < taglib-location > /WEB-INF/datetag.tld </ taglib-location > </ taglib > </ jsp-config > |
第四步 在jsp頁面開始使用
<%@ taglib uri = "/tags" prefix = "date" %> < date:date value = " ${trigger.startTime} " /> |
上述方式即可實作所述功能!
參考:http://hfutxf.iteye.com/blog/673472