数据库里存储的是bigint型的时间,entity实体中存放的是long类型的标签,现在想输出到jsp页面,由于使用的是jstl标签,而要显示的是可读的时间类型,找来找去有个 fmt:formatDate可以转化,但是只能将String类型的转成date型,long型则不可以,思考了好久,又不想破环jsp页面这种标签结构,参考网上jstl标签编写方法,如下:
第一步 写一个类继承TagSupport,实现doStartTag() 方法。
第一步 写一个类继承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;
/**
* 用于页面 jstl时间格式化
*
*
@Title
: JSTLDateUtils.java
*
@Description
:
TODO
(用一句话描述该文件做什么)
*
@author
eleven.song(宋涛)
*
@date
2014
-
3
-
4 下午06:28:51
*/
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