我正在使用带有休眠验证器 4.2 的 spring 3.1。我观察到休眠验证被调用了两次:一次在控制器级别,当我使用如下方法时:
@RequestMapping(method = RequestMethod.POST)
public String onSubmit(@Valid User user, BindingResult result) {....}
第二次将实体作为以下内容持久化:
org.hibernate.cfg.beanvalidation.BeanValidationEventListener.validate(..)
org.hibernate.cfg.beanvalidation.BeanValidationEventListener.onPreUpdate(..)
org.hibernate.action.EntityUpdateAction.preUpdate(..)
我相信在控制器级别进行验证并显示带有错误消息的错误页面更有意义。无论如何,在流程中进行两次相同的验证并不好。我在休眠文档中发现可以通过在休眠配置中设置为 false 来关闭它,hibernate.validator.autoregister_listeners
但不建议这样做。
那么推荐的验证方法是什么?同样在我的特殊情况下,第二次验证会引起麻烦,因为我有一个字段' confirmPassword
',当用户提交表单时需要进行验证,但表中不需要,所以每当我必须保存、更新用户时,我必须设置confirmPassword
不必要的字段只是为了验证通过。