相关疑难解决方法(0)

Hibernate验证器:@Email接受要求@ stackoverflow有效吗?

我正在使用@Email注释来验证电子邮件地址.我遇到的问题是它接受像ask@stackoverflow有效的电子邮件地址这样的东西.我想这是因为他们想要支持内部网地址,但我似乎找不到一个标志,所以它检查扩展.

我是否真的需要切换到@Pattern(以及任何灵活的电子邮件模式的建议)或者我错过了什么?

validation hibernate spring-mvc hibernate-validator

49
推荐指数
5
解决办法
5万
查看次数

Java/Spring MVC 3验证电子邮件地址

我有一个带有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;
Run Code Online (Sandbox Code Playgroud)

但是我得到了这些代码

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())
}
Run Code Online (Sandbox Code Playgroud)

我在控制台上得到这个:

email - must match "^([a-zA-Z0-9\\-\\.\\_]+)'+'(\\@)([a-zA-Z0-9\\-\\.]+)'+'(\\.)([a-zA-Z]{2,4})$"
Run Code Online (Sandbox Code Playgroud)

但我有电子邮件地址test@test.com,所以正则表达式不匹配.

所以我有两个问题:

  • 这有什么不对?
  • 我怎么能自己定义一个错误信息,因为这个显示给用户,这不是一件好事:-)

提前感谢您的帮助和最诚挚的问候.

java validation spring-mvc

21
推荐指数
3
解决办法
6万
查看次数