Вот простой компонент компонента, аннотированный с помощью новой (начиная с версии 3.0) функции Spring. @DateTimeFormat
аннотация (что, как я понимаю, заменяет потребность в pre-3.0 для пользовательских PropertyEditor
s по this SO question):Spring MVC: как отображать отформатированные значения даты в JSP EL
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
объектов. Отлично, мы на полпути.
Однако, я также хотел бы также иметь возможность отобразить созданный LocalDate
свойство в представлении JSP в том же формате MM/dd/yyyy
с использованием JSP EL как так (при условии, моя весна контроллер добавлен атрибут виджета к модели):
${widget.created}
К сожалению, это будет отображаться только по умолчанию toString
формат LocalDate
(в формате yyyy-MM-dd
). Я понимаю, что форма, если я использую Спринг помечает дата отображается по желанию:
<form:form commandName="widget">
Widget created: <form:input path="created"/>
</form:form>
Но я хотел бы, чтобы просто отобразить отформатированную строку даты без использования пружинного теги формы. Или даже тег JSTL fmt:formatDate
.
Начиная с Struts2, HttpServletRequest
был обернут в StrutsRequestWrapper
, который позволил выражениям EL, как это, фактически опросить стек значений OGNL. Поэтому мне интересно, добавила ли пружина что-то похожее на это, чтобы позволить конвертерам исполнять?
EDIT
Я также понимаю, что при использовании eval
тега весны дата будет отображаться в соответствии шаблон, определенный в @DateTimeFormat
аннотации:
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<spring:eval expression="widget.created"/>
Интересно, что при использовании пользовательских PropertyEditor
для форматирования date, этот тег НЕ ПРИНИМАЕТ этот метод и поэтому по умолчанию равен DateFormat.SHORT
как described in the docs. В любом случае, мне все равно хотелось бы знать, есть ли способ добиться форматирования даты без использования тега - только с использованием стандартного JSP EL.
рассмотреть форматирование даты в контроллере перед передачей на просмотр? – Septem