【发布时间】:2011-06-08 03:54:46
【问题描述】:
我有一个带有 Spring MVC 的 Java 后端,并且我正在我的域对象上使用这种方式验证电子邮件地址:
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
...
@NotNull
@Size(min = 1, max = 100)
@Pattern(regexp="^([a-zA-Z0-9\\-\\.\\_]+)'+'(\\@)([a-zA-Z0-9\\-\\.]+)'+'(\\.)([a-zA-Z]{2,4})$")
private String email;
但我得到的只是这些代码行
Set<ConstraintViolation<Person>> failures = validator.validate(personObject);
...
Map<String, String> failureMessages = new HashMap<String, String>();
for (ConstraintViolation<Person> failure : failures) {
failureMessages.put(failure.getPropertyPath().toString(), failure.getMessage());
System.out.println(failure.getPropertyPath().toString()+" - "+failure.getMessage())
}
我在控制台上得到了这个:
email - must match "^([a-zA-Z0-9\\-\\.\\_]+)'+'(\\@)([a-zA-Z0-9\\-\\.]+)'+'(\\.)([a-zA-Z]{2,4})$"
但我有电子邮件地址test@test.com,所以正则表达式不匹配。
所以我有两个问题:
- 这里有什么问题?
- 我怎样才能自己定义错误消息,因为向用户显示这不是一件好事:-)
提前感谢您的帮助和最诚挚的问候。
【问题讨论】:
-
你使用的是什么版本的 Spring MVC?
标签: java validation spring-mvc