参考博客:自定义标签的书写格式
数据库中将日期存储为long类型,拿到前台需要显示为日期类型"yyyy-MM-dd hh-mm-ss"
本想使用jstl的格式化标签库解决这个问题,各种尝试都失败了
<%--不能转换成date--%>
<%--<td><fmt:formatDate value="${lend.lendDate}" type="BOTH" dateStyle="LONG" pattern="yyyy-MM-dd hh:mm:ss"></fmt:formatDate></td>--%>
<%--<td><fmt:formatDate value="${Date(lend.lendDate)}" pattern="yyyy-MM-dd hh:mm:ss"></fmt:formatDate></td>--%>
<%--<td><fmt:formatDate value="${lend.lendDate}" pattern="yyyy-MM-dd hh:mm:ss"></fmt:formatDate></td>--%>
<%--<fmt:parseDate value="${lend.lendDate}" var="date" pattern="yyyy-MM-dd hh:mm:ss"/>--%>
<%--<td><fmt:formatDate value="${lend.expectDate}" pattern="yyyy-MM-dd hh:mm:ss"/> </td>--%>
于是,只能自己写标签进行转换了
写一个java类继承TagSupport
package pers.zwy.ls.util;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
/**用于在jsp页面中将long转成date类型
* @author Weiyu Zheng
* @date 2019/8/18
*/
public class DateTag extends TagSupport {
private String value;
@Override
public int doStartTag() throws JspException {
String vv = "" + value;
//将标签的value值由String转成long类型
long time = Long.valueOf(vv);
//得到Calendar类实例
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();
}
/**
* 设置属性值
* @param value
*/
public void setValue(String value) {
this.value = value;
}
}
在WEB-INF目录下创建datetag.tld文件
<?xml version="1.0" encoding="utf-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
version="2.1">
<tlib-version>1.0</tlib-version>
<!--标签库的默认前缀,如jstl核心库的前缀c-->
<short-name>date</short-name>
<!--可以写uri属性,指定导入jsp时,使用的uri-->
<tag>
<name>date</name>
<!--标签处理类-->
<tag-class>pers.zwy.ls.util.DateTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>value</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
在jsp页面中引入标签
<%--导入自定义标签--%>
<%@taglib prefix="date" uri="/WEB-INF/datetag.tld" %>
标签的使用
<td><date:date value="${lend.lendDate}"></date:date></td>
<td><date:date value="${lend.expectDate}"></date:date></td>
结果