Подтвердить что ты не робот

Как отобразить отформатированное 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

После некоторых исследований выяснилось, что я должен использовать тег spring: bind-tag:

<spring:bind path="customer.dateOfBirth">
   Date of birth: ${status.value}
</spring:bind>

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

Итак, мой вопрос: есть ли более простой способ отображения форматированного значения с помощью аннотаций spring?

4b9b3361

Ответ 1

Используйте тег spring:eval, который понимает правило @DateTimeFormat:

<spring:eval expression="customer.dateOfBirth" />

В качестве альтернативы вы можете удалить правило @DateTimeFormat из своей модели вместе и использовать тег joda formatDate, как показывает Naikus.

В будущем выпуске Spring планирует поддерживать подключение "SpEL", который является "<17676 > выражением", вызывается spring: eval, как стандартная реализация Unified EL для ваших страниц JSP. Это позволило бы встраивать линейные выражения типа ${customer.dateOfBirth} через SpEL. Вы можете проголосовать за этот запрос расширения здесь: https://jira.spring.io/browse/SPR-7459.

Ответ 2

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

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

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

Но последний jsp быстро позволяет вам создать custom tags.