格式化日期并使用JSTL和EL显示它

时间:2013-05-29 20:15:24

标签: java jsp web-applications jstl el

如何在JSP中格式化和显示Date对象,最好使用JSTL和EL,但欢迎任何其他解决方案?我无法更改bean对象。

我有以下课程:

import java.util.Date;
public class Person {
    private Date myDate; 
    public Date getMyDate() {
        return myDate;
    }
    public void setMyDate(Date myDate){
        this.myDate = myDate;
    }
}

我试图在JSP页面中显示此对象中的日期。当我这样做<c:out value="${person.myDate} />时,它会在页面中打印出来。 2013-06-08 00:00:00.0

我想要做的是删除日期的时间部分并将其格式化为MM-dd-yyyy

我试过了:

<c:set var="myDate" value="${person.myDate }"/>
<fmt:formatDate value="${myDate}" type="date" var="formattedDate"/>

它给了我以下错误

  

无法将字符串'$ {myDate}'转换为类java.util.Date以获取属性值:java.lang.IllegalArgumentException:Property Editor未向PropertyEditorManager注册

然后我尝试了以下内容:

<c:set var="myDate" value="${person.myDate }"/>
<fmt:parseDate value="${myDate }" var="parsedDate" pattern="MM-dd-yyyy"/>
<c:out value="${parsedDate }"/>

我得到了:

  

无法解析的日期:“$ {myDate}”

2 个答案:

答案 0 :(得分:19)

您的代码应该正常工作。试试这样:

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

<fmt:formatDate value="${person.myDate}" var="formattedDate" 
                type="date" pattern="MM-dd-yyyy" />
${formattedDate}

如果您有错误的JSTL声明来匹配您的Servlet / JSP版本,它通常不起作用。在尝试其他任何事情之前,请务必先阅读此内容:How to Reference and Use JSTL in your Web Application

如果您不确切了解您的环境,you can perform some tests to find out the versions尽管JSP中编写的简单${1 + 2}应该是JSP版本的一个很好的指标。如果您在浏览器中看到3,那么您正在使用JSP 2.x,如果您看到字符串${1 + 2},那么您将使用JSP 1.x。

答案 1 :(得分:0)

您需要将以下代码行添加到页面的头部,您的代码才能完美运行。     &lt;%@ taglib prefix =“fmt”uri =“http://java.sun.com/jsp/jstl/fmt”%&gt;