annotation en fonction de Printemps bean validation

Je recherche une annotation d'une approche fondée sur la validation des beans Spring en utilisant le printemps des modules. Dans ce tutoriel, la suite de haricot (getters et setters omis) est utilisé comme un exemple:

public final class User {  

  @NotBlank  
  @Length(max = 80)  
  private String name;  

  @NotBlank  
  @Email  
  @Length(max = 80)  
  private String email;  

  @NotBlank  
  @Length(max = 4000)  
  private String text;  
}

Le message d'erreur qui est utilisé si une règle de validation est désobéi doivent suivre le format suivant:

bean-class.bean-propery[validation-rule]=Validation Error message

Exemples pour la classe indiquée ci-dessus comprennent:

User.email[not.blank]=Please enter your e-mail address.  
User.email[email]=Please enter a valid e-mail address.  
User.email[length]=Please enter no more than {2} characters.

Le fait que les clés de message contient le nom de la classe présente un couple de problèmes:

  1. Si la classe est renommé, le message clés doivent aussi être modifiés
  2. Si j'ai une autre classe (par ex. une Personne) avec un e-mail de la propriété qui est validé à l'identique de l'Utilisateur.e-mail, j'ai besoin de dupliquer les messages, par exemple

    Personne.e-mail[pas.blanc]=Veuillez entrer votre adresse e-mail.
    Personne.e-mail[email]=Veuillez entrer une adresse e-mail valide.
    Personne.e-mail[longueur]=Veuillez entrer plus de {2} caractères.

En fait, la documentation prétend qu'il est possible de configurer un message par défaut pour une règle donnée (par exemple, @e-Mail):

email=email address is invalid

Ce message par défaut doit être utilisé si un bean message propre de la règle ne peut pas être trouvé. Cependant, mon expérience est que cela ne fonctionne tout simplement pas.

Un autre mécanisme pour éviter de dupliquer les messages est de passer la clé de la message d'erreur à la règle d'annotation. Supposons, par exemple, j'ai défini le suivant message d'erreur par défaut pour l'adresse Email de la règle

badEmail=Email address is invalid

Ce message doit être utilisé que si je annoter les biens comme ceci:

@Email(errorCode="badEmail")
private String email;

Cependant, j'ai essayé ceci, et encore une fois, il a juste ne semble pas fonctionner. Quelqu'un a trouvé un moyen d'éviter la duplication des messages d'erreur lors de l'utilisation de ce cadre de validation?

OriginalL'auteur Dónal | 2008-09-29