我正在使用@Email注释来验证电子邮件地址.我遇到的问题是它接受像ask@stackoverflow有效的电子邮件地址这样的东西.我想这是因为他们想要支持内部网地址,但我似乎找不到一个标志,所以它检查扩展.
我是否真的需要切换到@Pattern(以及任何灵活的电子邮件模式的建议)或者我错过了什么?
我正在使用JBoss 6和Seam,我有一个我试图坚持的实体User.我已经扩展org.jboss.seam.framework.EntityHome为提供一个UserHome类并重写了该persist()方法.我用javax.validation注释彻底注释了我的实体类.当我为实体类中的所有字段提供有效值时,该对象将保持不变.当我违反其中一个验证约束时,持久性会按预期失败.
我遇到的问题是在异步持久化期间违反约束:hibernate没有告诉我哪个约束被违反了!
javax.validation.ConstraintViolationException: validation failed for classes [com.example.model.User] duringpersist time for groups [javax.validation.groups.Default, ]
at org.hibernate.cfg.beanvalidation.BeanValidationEventListener.validate(BeanValidationEventListener.java:132)
at org.hibernate.cfg.beanvalidation.BeanValidationEventListener.onPreInsert(BeanValidationEventListener.java:71)
Run Code Online (Sandbox Code Playgroud)
如果我通过添加EntityManager.flush()来强制同步持久性UserHome.persist(),那么我可以捕获ConstraintViolationException包含违反约束的输出日志语句.
我的问题:是否可以使用hibernate/jboss注册一个监听器来进行约束违规?我认为hibernate没有打印违规行为有点蹩脚,但希望我可以插入一些代码来捕获并记录它们以获取更多信息.否则我不知道违反了什么约束.
谢谢!
我有一个User实体,其电子邮件属性带有注释@Email
@Email
private String email;
Run Code Online (Sandbox Code Playgroud)
我@Valid在我的Controller类上使用(javax.validation.Valid)批注。问题是控制器验证程序正在传递无效的电子邮件。示例:
pusp @ 1-显然这是一个无效的电子邮件地址
pusp @ fake
我注意到的模式是,@Email只需要sometext @ text,它不需要扩展名(.com / org等)。这是预期的行为吗?我是否需要通过自己的正则表达式实现@Email(regex="")