超类的条件Bean验证

时间:2015-09-24 08:10:37

标签: java bean-validation

用例:在添加/编辑地址或设置直接递送地址时,表单具有相同的字段。因此,最好将地址表单类用作交付表单的超类:

public class AddressForm {
    @NotEmpty
    private String name;

    // ...
}

public class DeliveryForm extends AddressForm {
    public static enum ShippingType {
        DIRECT_SHIPPING,
        // ...
    }

    @NotNull
    private ShippingType shippingType;
    // ...
}

是否可以在类级别创建自定义约束(验证器)来设置是否应验证超类的条件?

如:

@ValidateSuperclassIf(field = "shippingType", value = "DIRECT_SHIPPING")
public class DeliveryForm extends AddressForm {
    // ...
}

如何实施javax.validation.ConstraintValidator<ValidateSuperclassIf, Object>.isValid(Object value, ConstraintValidatorContext context)方法?

1 个答案:

答案 0 :(得分:1)

  

是否可以在课堂上创建自定义约束(验证器)   level来设置是否应该验证超类的条件   不是吗?

不,你不能。 Bean Validation(规范)中没有手段也没有参考实现Hibernate Validator这样做。

有一些讨论能够跳过超类型约束(HV-548BVAL-256),但这通常会禁用它们,而不是添加条件(取消)激活。