Как отобразить форматированный DateTime в Spring MVC 3.0? - PullRequest
16 голосов
/ 11 августа 2010

В моей модели есть поле 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>

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

Поэтому мой вопрос таков: существует ли более простой способ отображения отформатированного значения с использованием весеннего форматирования-annotations

Ответы [ 2 ]

19 голосов
/ 11 августа 2010

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

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

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

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

19 голосов
/ 11 августа 2010

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...