Printemps: Comment résoudre une erreur de validation -> code d'erreur -> message d'erreur

Au Printemps, après validation, nous obtenons un BindingResult objet dans le controller.

Assez Simple, si j'obtiens des erreurs de validation, je veux ré-afficher mon formulaire avec le message d'erreur ci-dessus chaque champ désolé.

Pour vérifier le champ des erreurs sur le terrain username de mon FormObject j'appelle:

FieldError usernameFieldError = bindingResult.getFieldError("username");

Génial, maintenant j'ai un FieldError objet qui, en supposant que je suis en utilisant le DefaultMessageCodeResolver contient maintenant quelque chose comme 4 codes d'erreur possibles.

Comment puis-je passer de FieldError -> Une chaîne de caractères qui est consommable pour l'utilisateur?

J'ai un MessageSource définie dans mon webapplication contexte, donc je peux mapper un code d'erreur à un message.

Mais parfois, le message par défaut sera le meilleur, et parfois je m'attends que les deux codes d'erreur pourrait avoir un message pertinent, nous avons donc besoin de choisir le meilleur.

Quelle méthode dois-je utiliser pour déterminer le meilleur message d'erreur possible de présenter pour un champ d'erreur?

  • Dois-je écrire un algorithme pour aller à travers tous les codes d'erreur et de sélection de la plus spécifique?
  • N'printemps fournir un soutien pour les aider à déterminer le plus de message d'erreur spécifique?
  • L'ensemble de ce processus semble si long et alambiqué, je pensais que le printemps était censé faire ce genre de choses faciles. Peut-être que je suis totalement hors de la base en quelque sorte?

OriginalL'auteur David Parks | 2010-11-17