11

如何Date在 JSP 中格式化和显示对象,最好使用 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:属性编辑器未向 PropertyEditorManager 注册

然后我尝试了以下方法:

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

我得到了:

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

4

2 回答 2

22

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

<%@ 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 版本,它通常不起作用。确保在尝试其他任何内容之前阅读此内容:如何在 Web 应用程序中引用和使用 JSTL

如果您不完全了解您的环境,您可以执行一些测试来找出版本,尽管${1 + 2}在您的 JSP 中编写一个简单的代码应该可以很好地指示 JSP 版本。如果您3在浏览器中看到,那么您使用的是 JSP 2.x,如果您看到的是字符串${1 + 2},那么您使用的是 JSP 1.x。

于 2013-05-29T20:37:41.373 回答
0

您需要将以下代码行添加到页面顶部,您的代码将完美运行。<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

于 2014-12-28T11:23:19.660 回答