Пример использования: при добавлении/редактировании адреса или настройке адреса прямой доставки форма имеет те же поля. Так что это хорошая практика, чтобы использовать класс формы адреса как привилегированный класс формы доставки:Условная проверка бина суперкласса
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)
тогда?
Я правильно понимаю вас, что вы хотите иметь разные правила проверки для двух разных форм, основанных на одних и тех же классах? Почему бы не использовать группы проверки для разных правил проверки в этом случае? возможно см. Http://stackoverflow.com/questions/14480489/jsr-303-how-to-ignore-validation-on-specific-fields-in-a-bean-some-of-the-time для групп проверки – matthias
Нет. То же валидация, но только проверка суперкласса, если выполняется условие. – dtrunk