Custom BeanValidation для взаимозависимых полей - PullRequest
0 голосов
/ 27 августа 2018

Можно ли получить доступ к другим свойствам класса в рамках валидатора, связанного со свойством? Прямо сейчас у меня есть следующее (в обозначении 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 ConstraintValidator, будет содержать экземпляр класса, но это не так. Я знаю, что мог бы решить проблему с ConstraintValidator на уровне класса, но я хочу, чтобы это было связано со свойствами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...