Spring MVC:如何在 JSP EL 中显示格式化的日期值
下面是一个简单的值 bean,用 Spring 的新(截至 3.0)便利性注释进行注释(据我所知,它取代了 3.0 之前对自定义 s 的需求,因为这个 SO 问题):@DateTimeFormat
PropertyEditor
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
}
将表单提交到此小部件的值出价时,日期格式可以完美地工作。也就是说,只有格式中的日期字符串才能成功转换为实际对象。太好了,我们已经完成了一半。MM/dd/yyyy
LocalDate
但是,我也希望能够使用JSP EL以相同的格式在JSP视图中显示创建的属性,如下所示(假设我的弹簧控制器向模型添加了一个小部件属性):LocalDate
MM/dd/yyyy
${widget.created}
不幸的是,这只会显示默认格式(格式)。我明白,如果我使用spring的表单标签,日期会根据需要显示:toString
LocalDate
yyyy-MM-dd
<form:form commandName="widget">
Widget created: <form:input path="created"/>
</form:form>
但我想简单地显示格式化的日期字符串,而不使用弹簧表单标签。甚至是JSTL的标签。fmt:formatDate
来自Struts2,它被包装在一个StrutsRequestWrapper
中,这使得像这样的EL表达式能够实际询问OGNL值堆栈。所以我想知道弹簧是否提供了类似的东西来允许转换器执行?HttpServletRequest
编辑
我还意识到,当使用spring的标签时,日期将根据注释中定义的模式显示:eval
@DateTimeFormat
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<spring:eval expression="widget.created"/>
有趣的是,当使用自定义来设置日期的格式时,此标记不会调用 该方法,因此默认为文档中所述的方法。无论如何,我仍然想知道是否有一种方法可以实现日期格式化而不必使用标记 - 仅使用标准JSP EL。PropertyEditor
PropertyEditor
getAsText
DateFormat.SHORT