2010-12-09 12 views
1

Ich verwende den Hibernate-Validator, um meine Formulare zu validieren. Ich habe das "Problem", dass der 9. des 14. Monats zum zweiten Monat im nächsten Jahr wird. (nur ein Beispiel für ein Szenario).Hibernate-Validator: Wie wird mit Rollover umgegangen? (28/14/2009 wird 28/2/2010)

Ich fragte mich, wie ich die Standardkonvertierung verhindern konnte und stattdessen eine benutzerdefinierte Fehlermeldung für sie anzeigen.

Weiß jemand auch, wie ich eine passende Nachricht anzeigen kann, wenn mein benutzerdefinierter Editor eine IllegalArgumentException auslöst?

@InitBinder 
    public void initBinder(WebDataBinder binder) { 
     CustomDateEditor editor = new CustomDateEditor(new SimpleDateFormat("dd/MM/yyyy"), true); 
     binder.registerCustomEditor(Date.class, editor); 
    } 

ich angemeldet eine Custom weil feder Portlet-mvc einige Probleme mit der Bindung hatte.

Antwort

2

Dieses Verhalten ist von DateFormat.setLenient() gesteuert wird und hat nichts mit Validierung zu tun (mit setLentient(false) es einen Typenkonfliktfehler an der Bindungsphase erzeugt):

DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); 
df.setLenient(false); 
CustomDateEditor editor = new CustomDateEditor(df, true); 
binder.registerCustomEditor(Date.class, editor); 
+0

@jack: Was passiert eigentlich - Überschlag oder 'IllegalArgumentException' ? – axtavt

Verwandte Themen