【发布时间】:2016-01-22 22:55:34
【问题描述】:
好的,所以我们希望允许用户进行手动迁移。为此,模型对象必须处于特定状态。我不想自动验证这个类的每个实例或这个类的任何实例。我知道如何手动调用验证器(一般来说),但我想知道我可以在模型上没有这些注释的情况下执行验证器吗?我只想对模型执行任意验证代码。想要使用验证 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() )
}
}
【问题讨论】:
-
出于兴趣,为什么要避免注释?它们的一个优点是模型的每个用户都知道他们需要遵守的约束。如果您希望仅在迁移期间应用某些验证,而不是在对象生命周期的其他时间点应用验证,验证组可能是一个有用的解决方案。
标签: java validation hibernate-validator