是否可以使用Validation API来验证某个外部操作的模型是否正确?

时间:2016-01-22 22:55:34

标签: java validation hibernate-validator

好的,我们希望允许用户进行手动迁移。为此,模型对象必须处于某种状态。我不想自动验证此类的每个实例或该类的任何实例。我知道如何手动调用验证器(作为一般事情),但我想知道的是我可以执行验证器而不在模型上添加这些注释吗?我只想在模型中再次执行任意验证代码。想要使用验证api的原因是因为它收集了约束违规。

例如像这样的

class ValidForMigration implements ConstraintViolation<MyModel> {
  boolean isValid( MyModel model ) {
      if ( model.getFoo() == null ) { return false; }
      return true;
  }
}

MySvc {
   ...
   void doMigrate(... ) {
       validator.validate( myModel, new ValidForMigration() )
   }
}

1 个答案:

答案 0 :(得分:1)

Bean Validation基于声明性约束的原则,即约束被声明一次 - 使用注释,XML描述符或(在Hibernate Validator中)API - 然后在对象生命周期中的适当点根据需要进行验证。因此,您在Bean验证中无法直接描述所描述的内容。

但是,Hibernate Validator constraint mapping API可能对您有所帮助。您在迁移期间使用API​​声明要应用的约束,并使用这些约束映射设置验证器。