相互依赖字段的自定义BeanValidation

时间:2018-08-27 14:38:59

标签: validation kotlin bean-validation jsr380

是否可以在与属性相关的验证器中访问类的其他属性?现在,我有以下内容(用Kotlin表示法):

带注释的字段和相互依赖的字段:

@MyConstraint(message = "Not valid")
var myBigDecimal: BigDecimal? = null

var anotherBigDecimal: BigDecimal? = null 

约束:

@Target(AnnotationTarget.FIELD)
@Retention(AnnotationRetention.RUNTIME)
@Constraint(validatedBy = [MyValidator::class])
annotation class MyConstraint(
  val message: String = "Foo",
  val groups: Array<KClass<out Any>> = arrayOf(),
  val payload: Array<KClass<out Any>> = arrayOf()
)  

验证者:

class MyValidator :
  ConstraintValidator<MyConstraint, BigDecimal> {
    override fun isValid(value: BigDecimal, 
                         context: ConstraintValidatorContext): Boolean {
       //right here I need to access 'anotherBigDecimal' // see above           
}

我希望传递给isValid的{​​{1}}方法的上下文包含该类的实例,但事实并非如此。我知道,我可以在类级别使用ConstraintValidator解决问题,但我想使其保持与属性相关。

0 个答案:

没有答案