type mvc form formatting spring-mvc

formatting - mvc - spring form date



¿Cómo mostrar un DateTime formateado en Spring MVC 3.0? (2)

Tengo un campo Joda-DateTime en mi modelo y quiero mostrarlo formateado en una vista JSP. Lo he anotado con la nueva anotación @DateTimeFormat:

public class Customer { private DateTime dateOfBirth; @DateTimeFormat(style="M-") public DateTime getDateOfBirth() { return dateOfBirth; } }

Ahora quiero mostrar el dateOfBirth en mi JSP:

Date of birth: ${customer.dateOfBirth}

Pero el resultado está sin formato:

Date of birth: 2010-08-11T11:23:30.148+02:00

Después de algunas investigaciones, descubrí que tengo que usar spring: bind-tag:

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

Con esto funciona. Pero parece demasiado complicado para esta simple tarea. Y el uso de este método en listas es aún más complicado, ya que tiene que integrar el índice de lista en la ruta de enlace.

Entonces, mi pregunta es: ¿hay una forma más sencilla de mostrar un valor formateado usando las anotaciones de formato de primavera?


Debido a que es un objeto datetime de joda y no un objeto Date, tendrá que escribir su propia función de formato o una etiqueta personalizada.

Si puede convertirlo a java.util.Date de alguna manera, entonces puede usar la biblioteca de fmt fmt fmt jstl.

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

Pero el último jsp rápidamente te permite crear fmt custom .


Use la etiqueta spring:eval que entiende la regla @DateTimeFormat :

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

Alternativamente, puede eliminar la regla @DateTimeFormat de su modelo de todos juntos y usar la etiqueta formatDate de Joda como lo ilustra Naikus.

En una versión futura, Spring planea admitir la conexión de "SpEL", que es el "Spring Expression Language" invocado por spring: eval, como la implementación predeterminada de Unified EL para sus páginas JSP. Esto permitiría que las expresiones en línea como ${customer.dateOfBirth} se enruten a través de SpEL. Puede votar esta solicitud de mejora aquí: https://jira.spring.io/browse/SPR-7459 .