У меня есть поле Joda-DateTime в моей модели, и я хочу отобразить его в формате JSP. Я аннотировал его новой аннотацией @DateTimeFormat:
public class Customer {
private DateTime dateOfBirth;
@DateTimeFormat(style="M-")
public DateTime getDateOfBirth() {
return dateOfBirth;
}
}
Теперь я хочу отобразить dateOfBirth в моем JSP:
Date of birth: ${customer.dateOfBirth}
Но результат не отформатирован:
Date of birth: 2010-08-11T11:23:30.148+02:00
После некоторого исследования, которое я выяснил, что я должен использовать пружину: bind-tag:
<spring:bind path="customer.dateOfBirth">
Date of birth: ${status.value}
</spring:bind>
С этим все работает. Но это кажется слишком сложным для этой простой задачи. А использовать этот метод в списках еще сложнее, поскольку вам необходимо интегрировать индекс списка в путь привязки.
Поэтому мой вопрос: существует ли более простой способ отображения отформатированного значения с использованием пружинных аннотаций форматирования?
Используйте тег spring: eval
, который понимает правило @DateTimeFormat
:
<spring:eval expression="customer.dateOfBirth" />
Кроме того, вы можете полностью удалить правило @DateTimeFormat
из своей модели и использовать тег Joda formatDate, как показывает Наикус.
В следующем выпуске Spring планирует поддерживать подключение «SpEL», который является «языком выражений Spring», вызываемым spring: eval, в качестве реализации Unified EL по умолчанию для ваших JSP-страниц. Это позволит также маршрутизировать встроенные выражения, такие как $ {customer.dateOfBirth}
, через SpEL. Вы можете проголосовать за этот запрос на улучшение здесь: https://jira.spring.io/browse/SPR-7459 .
Поскольку это объект joda datetime, а не объект Date, вам придется написать свою собственную функцию форматирования или собственный тег.
Если вы можете каким-то образом преобразовать его в java.util.Date, тогда вы можете использовать встроенную библиотеку тегов jstl fmt .
<fmt:formatDate value="${customer.dateOfBirth}" type="both"
pattern="MM-dd-yyyy" />
Но последняя версия jsp позволяет быстро создавать пользовательские теги .