我需要使用注解+正则表达式验证电子邮件。我尝试使用以下内容:
@NotNull
@Pattern(regexp=".+@.+\\.[a-z]+")
private String email;
然而,当我在电子邮件字段中输入不正确的电子邮件地址时,我不知道如何打印错误消息。有什么想法吗?
我需要使用注解+正则表达式验证电子邮件。我尝试使用以下内容:
@NotNull
@Pattern(regexp=".+@.+\\.[a-z]+")
private String email;
然而,当我在电子邮件字段中输入不正确的电子邮件地址时,我不知道如何打印错误消息。有什么想法吗?
首先,您应该向您的Pattern
注释添加一个message
属性。假设您的邮件变量是某个名为User的类的一部分:
class User{
@NotNull
@Pattern(regexp=".+@.+\\.[a-z]+", message="Invalid email address!")
private String email;
}
那么你需要定义一个验证器:
ValidatorFactory vf = Validation.buildDefaultValidatorFactory();
Validator validator = vf.getValidator();
User user = new User();
user.setEmail("user@gmail.com");
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()));
}
正如上面的评论所提到的:
@NotNull
@Email(message = "This email address is invalid")
private String email;
System.out.println(...)
:) - Thomas