Voici une solution. Il utilise jodatime mais pourrait probablement être changé pas:
Pour la vue (vitesse dans ce cas):
#springFormInput("model.object.xmlgregoriancalendar.field" "")
Pour le contrôleur:
@InitBinder
public void binder(WebDataBinder binder) {
binder.registerCustomEditor(XMLGregorianCalendar.class, new PropertyEditorSupport() {
public void setAsText(String value) {
setValue(createXMLGregorianCalendar(value));
}
public String getAsText() {
return new SimpleDateFormat("dd/MM/yyyy").format(((XMLGregorianCalendar)getValue()).toGregorianCalendar().getTime());
}
});
}
private XMLGregorianCalendar createXMLGregorianCalendar(String date) {
LocalDateTime result = DateTimeFormat.forPattern("dd/MM/yyyy").parseDateTime(date).toLocalDateTime();
return xmlDF().newXMLGregorianCalendar(result.toDateTime().toGregorianCalendar());
}
private static DatatypeFactory xmlDF() {
try {
return DatatypeFactory.newInstance();
} catch (DatatypeConfigurationException ex) {
throw new RuntimeException(ex);
}
}
Eh bien, qu'attendez-vous de lui , pour se transformer automatiquement en une sorte de sélecteur de date? :) – serg
Non, je m'attends à ce qu'il lie un champ de saisie avec un format de date donné au champ XMLGregorianCalendar ... –