У меня есть 2 класса:
@Data
public static class Inner {
@NotNull
private String innerField;
}
@Data
@OuterClasslevelConstraints
public static class Outer {
@NotNull
private String outerField;
@Valid
private Inner inner;
}
@Data
- это аннотация lombok, @NotNull
и @Valid
- это javax.validation.
@OuterClasslevelConstraints
- это пользовательский уровень классааннотация ограничения подтверждена моим пользовательским валидатором.Для проверки используются поля из внутренних и внешних классов.
Цель состоит в том, чтобы проверить каждое поле как во внутреннем, так и во внешнем, и только если все в порядке, запустить средство проверки на уровне класса.
ЕслиouterField
- это null
, валидатор на уровне класса не запускается - это то, что я хочу.
Но если innerField
равно нулю (а outerField
не равно null
), классвалидатор высокого уровня запускается и не работает, потому что мой валидатор на уровне класса рассчитывает на то, что innerField
не является null
.
Я попытался определить последовательность группы валидации, используя @GroupSequence
, но безуспешно - этоневозможно установить явную группу на @Valid
, и она всегда запускается после внешней проверки на уровне класса.
Может быть, такой сценарий слишком сложен, чтобы его можно было реализовать с помощью javax.validation, и я должен сделать класс-проверка уровня где-нибудь еще?