Java / Spring MVC 3 Validierung einer E-Mail-Adresse
Ich habe ein Java-backend mit Spring MVC und ich bin mit der Validierung in dieser Weise auf meine domain-Objekt für eine E-Mail-Adresse:
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;
Aber alle, die ich durch diese Zeilen von 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())
}
Bekomme ich diese auf der Konsole:
email - must match "^([a-zA-Z0-9\\-\\.\\_]+)'+'(\\@)([a-zA-Z0-9\\-\\.]+)'+'(\\.)([a-zA-Z]{2,4})$"
aber ich habe als E-Mail-Adresse [email protected]
so dass die regexp nicht passt.
Also ich habe zwei prolems:
- Was ist hier falsch?
- Und wie kann ich definieren, eine Fehlermeldung auf meiner eigenen, weil diese Anzeige für den Benutzer, das ist nicht eine gute Sache 🙂
Vielen Dank im Voraus für Eure Hilfe und Beste Grüße.
InformationsquelleAutor der Frage Tim | 2011-01-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie Hibernate Validator können Sie @E-Mail-annotation Trotzdem können Sie erstellen Sie Ihre benutzerdefinierte contraint annotation und legen Sie eine benutzerdefinierte Nachricht, um zu zeigen, in Ihrem Ressource-Eigenschaften-Datei.
InformationsquelleAutor der Antwort Javi
Ersten Versuch einfacher regex wie diese:
Als können Sie versuchen, RFC 2822 version:
Lassen Sie mich wissen, wenn die entweder die für Sie gearbeitet.
Auch Blick auf dieses Paket
hier
http://www.springbyexample.org/examples/spring-modules-validation-module.html
Könnte es die bessere alternative.
InformationsquelleAutor der Antwort Mat B.
Können Sie
@Email
aus Hibernate Validator:InformationsquelleAutor der Antwort Bassem Reda Zohdy
Dein regex hat ein paar Instanzen
'+'
in es, die ist irgendwie merkwürdig. e-mail-Adressen nicht in der Regel erforderlich, um einzelne Zitate in Ihnen 🙂 ich denke, dass vielleicht gemeint ist die Verkettung der Teile der Zeichenfolge, und diese sollte das doppelte Anführungszeichen?Für die Definition Ihrer eigenen Nachricht, fügen Sie einfach
message="{someWay.of.definingCodes}"
Anmerkung. Dann definieren Sie eine übersetzung inValidationMessages.properties
im default-package.Abwechselnd hibernate validator bietet
org.hibernate.validator.Email
wenn Sie bereit sind, hängen auf eine Erweiterung des Herstellers.InformationsquelleAutor der Antwort Affe