Validation Java / Spring MVC 3 d'une adresse email
J'ai un Java backend avec Spring MVC et je suis en utilisant la validation de cette façon sur mon objet de domaine en une adresse e-mail:
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
...
@NotNull
@Size(min = 1, max = 100)
@Pattern(regexp="^([a-zA-Z0-9\\-\\.\\_]+)'+'(\\@)([a-zA-Z0-9\\-\\.]+)'+'(\\.)([a-zA-Z]{2,4})$")
private String email;
Mais tout ce que j'obtiens avec ces lignes de code
Set<ConstraintViolation<Person>> failures = validator.validate(personObject);
...
Map<String, String> failureMessages = new HashMap<String, String>();
for (ConstraintViolation<Person> failure : failures) {
failureMessages.put(failure.getPropertyPath().toString(), failure.getMessage());
System.out.println(failure.getPropertyPath().toString()+" - "+failure.getMessage())
}
- Je obtenir ce sur la console:
email - must match "^([a-zA-Z0-9\\-\\.\\_]+)'+'(\\@)([a-zA-Z0-9\\-\\.]+)'+'(\\.)([a-zA-Z]{2,4})$"
mais j'ai que les adresses de courriel [email protected]
de sorte que la regexp ne correspond pas.
J'ai donc deux prolems:
- Quel est le problème ici?
- Et comment puis-je définir un message d'erreur sur mon propre, parce que l'affichage à l'utilisateur, qui n'est pas une bonne chose 🙂
Je vous remercie d'avance pour votre aide et Meilleures Salutations.
source d'informationauteur Tim
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez Hibernate Validator vous pouvez utiliser @E-mail annotation de toute façon vous pouvez créer votre propre contrainte d'annotation et de personnaliser le message à afficher dans votre ressource de fichier de propriétés.
Essayez d'abord de plus simple regex comme ceci:
Que vous pouvez essayer la RFC 2822 version:
Laissez-moi savoir si l'un a travaillé pour vous.
Également jeter un regard à ce package
ici
http://www.springbyexample.org/examples/spring-modules-validation-module.html
Il pourrait être une meilleure alternative.
Vous pouvez utiliser
@Email
de Hibernate Validator:Votre regex a un couple d'instances de
'+'
qui est une sorte de bizarre. les adresses e-mail ne sont généralement pas tenus d'avoir des guillemets simples en eux 🙂 je pense que c'est peut-être destinée à être la concaténation des morceaux de la Chaîne, et ceux-ci devraient être des guillemets?Pour définir votre propre message, il suffit d'ajouter
message="{someWay.of.definingCodes}"
à l'annotation. Puis de définir une traduction pourValidationMessages.properties
dans le package par défaut.Alternativement hibernate validator fournit
org.hibernate.validator.Email
si vous êtes prêt à dépendre d'un fournisseur extension.