2012-04-02 16 views
5

Necesito hacer una validación de un correo electrónico usando anotación + expresión regular. He intentado utilizar el siguiente:anotación & regex

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

Sin embargo, no sé cómo imprimir un mensaje de error cuando no tengo una dirección de correo electrónico incorrecta en el campo de correo electrónico. ¿Algunas ideas?

+1

Eso depende de cómo se hace la validación y en la que desea imprimir el mensaje. Respuesta fácil: 'System.out.println (...)' :) – Thomas

+3

Disculpa la pregunta, pero ¿por qué no utilizas la anotación @Email? – Peterino

Respuesta

8

Primero debe agregar un atributo message a su anotación Pattern. Supongamos que la variable de correo es parte de un usuario de clase:

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

entonces usted debe definir un validador:

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

luego encontrar los errores de validación.

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

Como se alude en los comentarios anteriores:

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