2012-04-02 165 views
5

我需要使用註釋+正則表達式來驗證電子郵件。我試圖用以下幾點:註釋&正則表達式

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

不過,我不知道如何打印錯誤消息時,我有在電子郵件字段中的電子郵件地址不正確。有任何想法嗎?

+1

這取決於你怎麼做驗證和要打印的消息。簡單的回答:'System.out.println(...)':) – Thomas 2012-04-02 14:25:42

+3

對不起,但爲什麼你不使用@Email註釋? – Peterino 2013-09-20 15:14:26

回答

8

首先,您應該爲您的Pattern註釋添加message屬性。 假設你的郵件變量是一些類用戶的一部分:

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;