Issue
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?
Solution
Use the spring:eval
tag which understands the @DateTimeFormat
rule:
<spring:eval expression="customer.dateOfBirth" />
Alternatively, you can remove the @DateTimeFormat
rule from your model all-together and use Joda's formatDate tag as Naikus illustrates.
In a future release, Spring plans to support plugging in "SpEL", which is the "Spring Expression Language" invoked by spring:eval, as the default Unified EL implementation for your JSP pages. This would allow in-line expressions like ${customer.dateOfBirth}
to be routed through SpEL as well. You can vote up this enhancement request here: https://jira.spring.io/browse/SPR-7459.
Answered By - kdonald
Answer Checked By - Marie Seifert (JavaFixing Admin)