2010-12-09 14 views
1

J'utilise le validateur d'hibernation pour valider mes formulaires. J'ai le "problème" que le 9ème du 14ème mois devienne le deuxième mois de l'année prochaine. (juste en exemple d'un scénario).Hibernate validator: comment gérer le rollover? (28/14/2009 devient 28/2/2010)

Je me demandais comment je pouvais empêcher la conversion par défaut et afficher à la place un message d'erreur personnalisé pour cela.

Est-ce que quelqu'un sait aussi comment je peux afficher un message appropié si mon éditeur personnalisé lance une exception IllegalArgumentException?

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

J'ai enregistré un customEditor car spring-portlet-mvc avait des problèmes avec la liaison.

Répondre

2

Ce comportement est contrôlé par DateFormat.setLenient() et n'a rien à voir avec la validation (avec setLentient(false) il produit une erreur d'incompatibilité de type à la phase de liaison):

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

@jack: Qu'est-ce qui se passe réellement - capotage ou 'IllegalArgumentException' ? – axtavt