【问题标题】:Bean Validation Groups - Validating inner classesBean Validation Groups - 验证内部类
【发布时间】:2018-10-30 15:31:23
【问题描述】:

我试图通过此代码仅在 ValidateZZ.class 组中验证 B.name

@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 未验证。 显然我做错了什么。我该如何解决?

【问题讨论】:

    标签: java validation


    【解决方案1】:

    我就是这样解决这个问题的:

    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()]));
    

    我不确定这是正确的方法,但它确实有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-31
      • 2016-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多