jsp中自定义标签将long转成date类型,使用jstl的format标签库失败

参考博客:自定义标签的书写格式

数据库中将日期存储为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>

 结果

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值