Проверка нескольких столбцов - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь построить более сложные правила проверки, используя несколько полей.

import javax.validation.*
import kotlin.reflect.KClass

@Constraint(validatedBy = [MyCustomCheckValidator::class])
@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
annotation class MyCustomCheck(
        val message: String = "invalid",
        val groups: Array<KClass<*>> = [],
        val payload: Array<KClass<out Payload>> = []
) {
}

@MyCustomCheck
data class Foo (
        var bool: Boolean,
        var value1: Int?,
        var value2: Int?
)

class MyCustomCheckValidator : ConstraintValidator<MyCustomCheck, Foo> {

    override fun isValid(foo: Foo, context: ConstraintValidatorContext): Boolean {
        return if (foo.bool)
            foo.value1 != null && foo.value2 != null
        else 
            true

    }
}

fun main() {
    val foo = Foo(true, null, null)
    val validator = Validation.buildDefaultValidatorFactory().validator
    val result = validator.validate(foo)
    println(result.size)
}

Предположим, что Foo (true, null, null) проверяется. Я должен указать, что оба поля value1 и value2 должны быть зафиксированы. Как я могу это сделать? Может быть, есть способ создать более одной ConstraintViolation для одной проверки?

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