【发布时间】:2015-10-02 06:41:00
【问题描述】:
我开发应用程序,发现一些我无法理解的东西。 我创建了名为 @UsernameAvailable 的自定义验证注释和 ConstraintValidator 的实现。
我用注释注释了我的实体的某些字段,并添加了一些 System.out.println("something message");在 ConstraintValidator isValid() 方法中。
我注意到验证方法被调用了两次:
一开始页面上的表单被提交并且数据被绑定到实体。 然后,第二次当实体被 JpaRepository(来自 Spring Data JPA)保存时
但不同之处在于,在我的 ConstraintValidator 实现中,我有一些 @Autowired 依赖项,并且当第一次在“表单提交验证”上进行验证时,依赖项被正确注入。
第二次,在保存实体时调用 isValid 方法,我的 @Autowired Service 为空,这是为什么呢?
如果您不明白,请阅读并观看:
我写的所有内容都显示在此视频中:https://www.youtube.com/watch?v=rFf0CaxaHVc(最好,从 04:20 分钟开始观看)
这正是我遇到的问题,为什么我必须检查 isValid 中的空值?为什么服务为空?
理解这一点对我来说很重要
【问题讨论】:
标签: java spring validation jpa