Bean Validation Groups - Проверка внутренних классов - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь проверить B.name только в группе ValidateZZ.class по этому коду

@GroupSequence({A.class, ValidateZZ.class})
class A {
    @NotNull(group = ValidateZZ.class)
    String name;

    @Valid
    B classB;
}

@Validate
class B {
    @NotNull(group = ValidateZZ.class)
    String name;
}

Но это не работа! A.name подтверждено, но a.classB.name не подтверждено. Очевидно, я делаю что-то не так. Как я могу это исправить?

1 Ответ

0 голосов
/ 30 октября 2018

Я решаю эту проблему следующим образом:

private <T> void validateFormData(T formData, Class<T> clazz, LoanApplicationIo loanApplication) {
    List<Class> groups = Arrays.stream(clazz.getAnnotations())
        .filter(annotation -> annotation instanceof GroupSequence)
        .flatMap(annotation -> Arrays.stream(((GroupSequence)annotation).value()))
        .filter(Class::isInterface)
        .distinct()
        .collect(Collectors.toList());
    if (!groups.contains(Default.class)) {
        groups.add(Default.class);
    }

    Set<ConstraintViolation<T>> violations = validator.validate(formData, groups.toArray(new Class[groups.size()]));

Я не уверен, что это правильный путь, но он работает.

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