2012-04-02 3 views
5

Мне нужно сделать валидацию электронной почты, используя аннотацию + регулярное выражение. Я пытался использовать следующее:аннотация и регулярное выражение

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

Однако, я не знаю, как вывести сообщение об ошибке, когда у меня есть неправильный адрес электронной почты в поле электронной почты. Есть идеи?

+1

Это зависит от того, как вы делаете проверку и где вы хотите, чтобы напечатать это сообщение. Легкий ответ: 'System.out.println (...)' :) – Thomas

+3

Извините за вопрос, но почему вы не используете аннотацию @Email? – Peterino

ответ

8

Сначала вы должны добавить атрибут message в свою аннотацию Pattern. Предположим, что переменная почта является частью некоторого класса пользователя:

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

Затем следует определить валидатор:

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

Затем найти ошибки проверки.

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

Как указывалось в предыдущих комментариях:

@NotNull 
@Email(message = "This email address is invalid") 
private String email; 
Смежные вопросы