2010-11-02 22 views
12
modèle

....JSR-303 Type de vérification Avant de liaison

@Digits(integer=5, fraction=0, message="The value must be numeric and less than five digits") 
private int value; 

fichier haricots ....

<mvc:annotation-driven /> 

contrôleur ....

@RequestMapping(value = "/admin/save.htm", method = { RequestMethod.POST }) 
public ModelAndView saveSection(@Valid @ModelAttribute Section section, BindingResult result) { 
    if(result.hasErrors()) { 
     return new ModelAndView("admin/editSection", "section", section); 
    } 

Comment puis-je restreindre la "valeur" aux chiffres seulement? Si j'entre autre chose qu'un numéro, je reçois cette erreur:

Failed to convert property value of type java.lang.String to required type java.lang.Integer for property value; nested exception is org.springframework.core.convert.ConversionFailedException: Unable to convert value "A" from type java.lang.String to type java.lang.Integer; nested exception is java.lang.IllegalArgumentException: Unable to parse A

J'ai vu quelques messages mentionner initBinding mais je ne suis pas sûr de savoir comment l'utiliser ou si elle va même me aider. Cela doit avoir été résolu avant. Y a-t-il un moyen de s'assurer qu'il s'agit d'un chiffre avant qu'il ne soit consolidé? Ou, si quelqu'un pouvait publier l'entrée correcte messages.properties pour remplacer cette erreur, cela pourrait fonctionner pour moi aussi.

J'ai essayé @Pattern mais cela ne fonctionne pas sur ints

Répondre

24

Comme vous l'avez mentionné, vous avez besoin d'un message convivial dans messages.properties. Vous pouvez utiliser l'un des codes de messages suivants (avec différents niveaux de sélectivité):

  • typeMismatch.section.value
  • typeMismatch.value
  • typeMismatch.int
  • typeMismatch

Aussi, lorsque vous ne savez pas code de message, vous pouvez simplement imprimer le - son toString() renvoie la description complète de la liaison er rors.

+0

Pouvez-vous l'expliquer plus en détail? –

+0

Plus de détails sur l'emplacement correct de messages.properties et en le déclarant dans les fichiers de configuration .xml dans cette réponse: http://stackoverflow.com/questions/6540300/spring-3-0-mvc-seems-to-be- ignoring-messages-properties –

+4

il semble y avoir une référence circulaire ici, cette réponse pointe vers une réponse (pour plus d'explications) qui renvoie à cette réponse! – gresdiplitude