J'étudie une approche basée sur l'annotation pour valider les beans Spring en utilisant spring modules. En this tutorial, les haricots suivants (accesseurs omis) est utilisé comme un exemple:validation basée sur l'annotation basée sur le haricot
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 particulière désobéi doit suivre ce format:
bean-class.bean-propery[validation-rule]=Validation Error message
des exemples de la classe 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 contiennent le nom de classe présente quelques problèmes:
- Si la classe est renommé, les clés de message doivent également être changé
Si j'ai une autre classe (par exemple Person) avec une propriété email validée de la même manière que User.email, j'ai besoin de dupliquer les messages, par ex.
Person.email [not.blank] = Veuillez entrer votre adresse e-mail.
Person.email [email] = Veuillez entrer une adresse e-mail valide. Person.email [length] = Entrez au maximum {2} caractères.
En fait, les revendications de documentation qui est possible de configurer un message par défaut pour une règle particulière (par exemple @Email) comme ceci:
email=email address is invalid
Ce message par défaut doit être utilisé si un haricot message spécifique pour la règle ne peut pas être trouvé. Cependant, d'après mon expérience, cela ne fonctionne tout simplement pas.
Un autre mécanisme permettant d'éviter les messages en double consiste à transmettre la clé du message d'erreur à l'annotation de règle. Par exemple, supposons que je l'ai défini le message d'erreur par défaut suivant la règle @Email
badEmail=Email address is invalid
Ce message doit être utilisé si j'annote la propriété concernée comme ceci:
@Email(errorCode="badEmail")
private String email;
Cependant, j'essayé, encore et encore, cela ne semble pas fonctionner. Quelqu'un at-il trouvé un moyen d'éviter la duplication des messages d'erreur lors de l'utilisation de ce cadre de validation?
Dans la configuration de Spring présentée ci-dessus, qu'est-ce que le bean configurationLoader? –
Salut Don - J'ai téléchargé le code source à partir du site Web tutoriel que vous avez mentionné, et configurationLoader est déjà l'un des beans définis dans leur config xml. Quand je rentre à la maison et regarde le code que j'ai écrit, je peux mettre à jour cette publication. – toolkit
Le bean configurationLoader du tutoriel est de type org.springmodules.validation.bean.conf.loader.annotation.AnnotationBeanValidationConfigurationLoader – toolkit