2012-04-02 13 views
5

Ich muss eine Validierung einer E-Mail mit Annotation + Regex. Ich habe versucht, die folgenden zu verwenden:Annotation & Regex

@NotNull 
@Pattern(regexp="[email protected]+\\.[a-z]+") 
private String email; 

Aber ich weiß nicht, wie eine Fehlermeldung drucken, wenn ich eine falsche E-Mail-Adresse in das E-Mail-Feld haben. Irgendwelche Ideen?

+1

das hängt davon ab, wie Sie die Validierung tun und wo Sie diese Nachricht drucken möchten. Einfache Antwort: 'System.out.println (...)' :) – Thomas

+3

Sorry für die Frage, aber warum verwenden Sie nicht die @ E-Mail Annotation? – Peterino

Antwort

8

Zuerst sollten Sie ein message Attribut zu Ihrer Pattern Anmerkung hinzuzufügen. Angenommen, Ihre E-Mail variablen Teil einer Klasse Mitglied ist:

class User{ 
@NotNull 
@Pattern(regexp="[email protected]+\\.[a-z]+", message="Invalid email address!") 
private String email; 
} 

Dann sollten Sie einen Validator definieren:

ValidatorFactory vf = Validation.buildDefaultValidatorFactory(); 
Validator validator = vf.getValidator(); 
User user = new User(); 
user.setEmail("[email protected]"); 
Set<ConstraintViolation<User>> constraintViolations = validator 
     .validate(user); 

Dann Validierungsfehler finden.

for (ConstraintViolation<Object> cv : constraintViolations) { 
     System.out.println(String.format(
      "Error here! property: [%s], value: [%s], message: [%s]", 
      cv.getPropertyPath(), cv.getInvalidValue(), cv.getMessage())); 
} 
0

Wie oben in den Kommentaren angedeutet:

@NotNull 
@Email(message = "This email address is invalid") 
private String email;