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

Posted

技术标签:

【中文标题】格式化日期并使用 JSTL 和 EL 显示它【英文标题】:Format a date and display it using JSTL and EL 【发布时间】:2013-05-25 06:04:36 【问题描述】:

如何在 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:属性编辑器未向 PropertyEditorManager 注册

然后我尝试了以下方法:

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

我得到了:

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

【问题讨论】:

【参考方案1】:

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

<%@ 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。

【讨论】:

给我“无法将字符串 '$myDate' 转换为 java.util.Date 类” 对于错误的 JSTL 声明,如果我不尝试格式化,我的页面会显示日期。这足以确认 jstl 声明与我的 servlet/jsp 版本匹配吗? 不,标签在 JSP 版本之间发生了变化。他们过去常常得到一个字符串(EL)并自己评估它。然后在更高的 JSP 版本中,servlet 容器进行评估,然后将对象发送到接收该类型对象而不是要评估的字符串的标记。如果你混合标签,你会得到奇怪的错误。如果一个标签有效,并不意味着其余标签都很好。【参考方案2】:

您需要将以下代码行添加到页面顶部,您的代码将完美运行。

【讨论】:

以上是关于格式化日期并使用 JSTL 和 EL 显示它的主要内容,如果未能解决你的问题,请参考以下文章

杂记-格式化Date默认格式,日期加一天,jstl判断字符类型,ajax模拟from表单后台跳转页面,jstl访问数据库并在页面显示

EL表达式

JSTL标签

JSTL基础知识

jsp页面日期如何格式化

JSP页面日期按格式显示:jstl-fmt使用