jsp自定义标签(时间格式化包括Long转时间)

时间:2024-03-05 20:32:01

1、jsp自带标签的格式化:

jstl fmt 函数大全:主要针对格式化功能

Tags   
fmt:requestEncoding 
fmt:setLocale 
fmt:timeZone 
fmt:setTimeZone 
fmt:bundle 
fmt:setBundle 
fmt:message 
fmt:param 
fmt:formatNumber 
fmt:parseNumber 
fmt:formatDate 
fmt:parseDate  

 

先在jsp页面上增加:

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>

...

<fmt:formatNumber value="${item.sumAmount}" pattern="##.##" minFractionDigits="2" ></fmt:formatNumber>


 

a. 格式化数字:

<fmt:formatNumber value="${item.sumAmount}" pattern="##.##" minFractionDigits="2" ></fmt:formatNumber>

b. 格式化时间

日期格式(2016年5月25日23点00分23秒)

<fmt:formatDate value="<%=new Date() %>" pattern="yyyy年MM月dd日HH点mm分ss秒" />
<fmt:formatDate value="${date}" pattern="yyyy年MM月dd日HH点mm分ss秒" />

注意,此时,value必须是date类型的数据,不适合long转成date.

 

c. long转成date:

数据库里存储的是bigint型的时间,entity实体中存放的是long类型的标签,现在想输出到jsp页面,由于使用的是jstl标签,而要显示的是可读的时间类型,找来找去有个 fmt:formatDate可以转化,但是只能将String类型的转成date型,long型则不可以,觉得自定义标签比较靠谱,也不破环jsp页面这种标签结构,参考网上jstl标签编写方法,如下:
第一步 写一个类继承TagSupport,实现doStartTag() 方法。 

package com.portx.util;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

/**
 * 用于页面 jstl时间格式化s
 * Created by gmq on 2016/5/24.
 */
public class DateTag extends TagSupport {

    private static final long serialVersionUID = 6464168398214506236L;

    private String value;

    @Override
    public int doStartTag() throws JspException {
        String vv = "" + value;
        try {
            long time = Long.valueOf(vv.trim());
            Calendar c = Calendar.getInstance();
            c.setTimeInMillis(time);
            SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
            String s = dateformat.format(c.getTime());
            pageContext.getOut().write(s);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return super.doStartTag();
    }

    public void setValue(String value) {
        this.value = value;
    }

}

第二步 编写tld文件,datetag.tld,放在/WEB-INF/tld/目录下:

<?xml version="1.0" encoding= "UTF-8"?>
<taglib>
    <tlib-version>1.0</tlib-version>
    <jsp-version>1.2</jsp-version>

    <short-name>date</short-name>

    <tag>
        <name>date</name>
        <tag-class>com.portx.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/tld/datetag.tld</taglib-location>
        </taglib>
    </jsp-config>

第四步 在jsp页面开始使用:

<%@ taglib uri="/tags" prefix="date"%>
....

<date:date value ="${item.createdTime} "/>

此时就可以把long转换成date类型的string了。