数据库里存储的是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