Spring MVC: comment faire pour afficher formaté les valeurs de date en JSP EL

Voici une simple valeur de haricots annoté avec le Printemps du nouveau (3.0) commodité @DateTimeFormat annotation (qui, comme je comprends remplace le pré-3.0 besoin pour personnalisé PropertyEditors comme par cette SORTE de question):

import java.time.LocalDate;
import org.springframework.format.annotation.DateTimeFormat;

public class Widget {
  private String name;

  @DateTimeFormat(pattern = "MM/dd/yyyy")
  private LocalDate created;

  //getters/setters excluded
}

Quand biding les valeurs à partir d'un formulaire de soumission pour ce widget, le format de la date fonctionne parfaitement. C'est, uniquement date de chaînes dans le MM/dd/yyyy format convertir avec succès à de véritables LocalDate objets. Super, nous sommes à mi-chemin.

Cependant, je voudrais aussi être en mesure d'afficher également la créé LocalDate propriété dans une JSP d'affichage dans le même MM/dd/yyyy format à l'aide de JSP EL comme (en supposant que mon printemps contrôleur ajouté un widget d'attribut dans le modèle):

${widget.created}

Malheureusement, cela ne fera qu'afficher la valeur par défaut toString format de LocalDate (en yyyy-MM-dd format). Je comprends que si j'utilise du printemps balises de formulaire la date s'affiche comme vous le souhaitez:

<form:form commandName="widget">
  Widget created: <form:input path="created"/>
</form:form>

Mais je voudrais simplement afficher la date formatée chaîne sans utiliser le printemps balises de formulaire. Ou même JSTL est fmt:formatDate tag.

Venant de Struts2, le HttpServletRequest était enveloppé dans une StrutsRequestWrapper qui a permis à EL expressions de ce type à fait d'interroger la OGNL valeur de la pile. Alors je me demandais si le printemps fournir quelque chose de similaire à ce pour permettre à des convertisseurs pour les exécuter?

MODIFIER

Je me rends compte que lors de l'utilisation de ce printemps eval tag de la date d'affichage selon le modèle défini dans le @DateTimeFormat annotation:

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<spring:eval expression="widget.created"/>

Il est intéressant de noter, lors de l'utilisation d'une coutume PropertyEditor pour le format de la date, cette balise n'invoque PAS que PropertyEditor's getAsText méthode et donc par défaut le DateFormat.SHORT comme décrite dans les docs. En tout cas, je voudrais encore savoir si il existe un moyen pour parvenir à la date de mise en forme sans avoir à utiliser une balise--uniquement à l'aide de JSP standard EL.

envisager la mise en forme de la date de contrôleur avant de remettre à la vue?

OriginalL'auteur Brice Roncace | 2014-12-17