How to display a formatted DateTime in Spring MVC 3.0?

Viewed 30422

I have a Joda-DateTime field in my model and want to display it formatted in a JSP view. I have annotated it with the new @DateTimeFormat annotation:

public class Customer {
   private DateTime dateOfBirth;

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

Now I want to display the dateOfBirth in my JSP:

Date of birth: ${customer.dateOfBirth}

But the result is unformatted:

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

After some research I found out, that I have to use the spring:bind-tag:

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

With this it works. But it seems too complicated for this simple task. And using this method on lists is even more complicated since you have to integrate the list-index into the binding-path.

So my question is: Is there a simpler way to display a formatted value using the spring formatting-annotations?

3 Answers

Spring gives us the option to set global date-time formats via the application properties file. Just add this config to application.properties:

spring.mvc.format.date=yyyy-MM-dd
spring.mvc.format.date-time=yyyy-MM-dd HH:mm:ss
spring.mvc.format.time=HH:mm:ss
Related