Как отобразить форматированный DateTime в Spring MVC 3.0?

У меня есть поле 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>

С этим все работает. Но это кажется слишком сложным для этой простой задачи. А использовать этот метод в списках еще сложнее, поскольку вам необходимо интегрировать индекс списка в путь привязки.

Поэтому мой вопрос: существует ли более простой способ отображения отформатированного значения с использованием пружинных аннотаций форматирования?

16
задан Florian Fankhauser 30 September 2013 в 06:46
поделиться

2 ответа

Используйте тег 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 .

19
ответ дан 30 November 2019 в 16:36
поделиться

Поскольку это объект joda datetime, а не объект Date, вам придется написать свою собственную функцию форматирования или собственный тег.

Если вы можете каким-то образом преобразовать его в java.util.Date, тогда вы можете использовать встроенную библиотеку тегов jstl fmt .

<fmt:formatDate value="${customer.dateOfBirth}" type="both" 
      pattern="MM-dd-yyyy" />

Но последняя версия jsp позволяет быстро создавать пользовательские теги .

19
ответ дан 30 November 2019 в 16:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: