2015-09-24 2 views
0

Пример использования: при добавлении/редактировании адреса или настройке адреса прямой доставки форма имеет те же поля. Так что это хорошая практика, чтобы использовать класс формы адреса как привилегированный класс формы доставки:Условная проверка бина суперкласса

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) тогда?

+0

Я правильно понимаю вас, что вы хотите иметь разные правила проверки для двух разных форм, основанных на одних и тех же классах? Почему бы не использовать группы проверки для разных правил проверки в этом случае? возможно см. Http://stackoverflow.com/questions/14480489/jsr-303-how-to-ignore-validation-on-specific-fields-in-a-bean-some-of-the-time для групп проверки – matthias

+0

Нет. То же валидация, но только проверка суперкласса, если выполняется условие. – dtrunk

ответ

1

Можно ли создать пользовательское ограничение (валидатор) на класс уровня установить условие, должен ли суперкласс быть проверенной или нет?

Нет, вы не можете. Нет средств в проверке Bean (спецификация) или в контрольной версии Hibernate Validator для этого.

Есть несколько дискуссий, в которых есть возможность пропускать ограничения типа супер (HV-548 и BVAL-256), но это как правило отключает их, а не добавляет условное (деактивирование).

+0

Тогда мне нужно управлять своими полями дважды. Спасибо за информацию и ссылки. – dtrunk

Смежные вопросы