gpt4 book ai didi

java - Spring MVC : how to display formatted date values in JSP EL

转载 作者:IT老高 更新时间:2023-10-28 13:51:35 34 4
gpt4 key购买 nike

这是一个简单的值 bean,使用 Spring 的新(从 3.0 起)方便的 @DateTimeFormat 注释(据我了解,它取代了 3.0 之前对自定义 PropertyEditor 的需求)根据 this SO question ):

import java.time.LocalDate;
import org.springframework.format.annotation.DateTimeFormat;

public class Widget {
private String name;

@DateTimeFormat(pattern = "MM/dd/yyyy")
private LocalDate created;

// getters/setters excluded
}

将表单提交中的值绑定(bind)到此小部件时,日期格式完美无缺。也就是说,只有 MM/dd/yyyy 格式的日期字符串才能成功转换为实际的 LocalDate 对象。太好了,我们已经完成了一半。

但是,我还希望能够使用 JSP EL 以相同的 MM/dd/yyyy 格式在 JSP View 中显示创建的 LocalDate 属性,例如所以(假设我的 spring Controller 向模型添加了一个小部件属性):

${widget.created}

不幸的是,这只会显示 LocalDate 的默认 toString 格式(yyyy-MM-dd 格式)。我知道,如果我使用 spring 的表单标签,日期会根据需要显示:

<form:form commandName="widget">
Widget created: <form:input path="created"/>
</form:form>

但我想简单地显示格式化的日期字符串,而不使用 Spring 表单标签。甚至是 JSTL 的 fmt:formatDate 标签。

来自 Struts2,HttpServletRequest 被包装在 StrutsRequestWrapper 中。这使得像这样的 EL 表达式能够实际询问 OGNL 值堆栈。所以我想知道spring是否提供了类似的东西来允许转换器执行?

编辑

我还意识到,当使用 spring 的 eval 标签时,日期将根据 @DateTimeFormat 注释中定义的模式显示:

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<spring:eval expression="widget.created"/>

有趣的是,当使用自定义 PropertyEditor 格式化日期时,此标记不会调用 PropertyEditorgetAsText 方法,因此默认为DateFormat.SHORTdescribed in the docs .无论如何,我仍然想知道是否有一种方法可以在无需使用标记的情况下实现日期格式 - 仅使用标准 JSP EL。

最佳答案

您可以使用该标签为您提供这些格式,例如金钱、数据、时间等等。

您可以在您的 JSP 上添加引用: <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

并使用以下格式: <fmt:formatDate pattern="yyyy-MM-dd" value="${now}" />

以下是引用:

http://www.tutorialspoint.com/jsp/jstl_format_formatdate_tag.htm

关于java - Spring MVC : how to display formatted date values in JSP EL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27516576/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com