Как расширить встроенный валидатор Hibernate ConstraintValidator

Сейчас я работаю над своим приложением spring + hibernate.
Я хочу наложить валидатор аннотации @Min и написал следующий код:

@Component
public class CustomMinValidator extends MinValidatorForNumber {

    public void initialize() {
        Min min = new Min() {

            @Override
            public String message() {
                return null;  //To change body of implemented methods use File | Settings | File Templates.
            }

            @Override
            public Class<?>[] groups() {
                return new Class<?>[0];
            }

            @Override
            public Class<? extends Payload>[] payload() {
                return null;
            }

            @Override
            public long value() {
                return 150;
            }

            @Override
            public Class<? extends Annotation> annotationType() {
                return null;
            }
        };
        super.initialize(min);
    }
}

Но в отладке я вижу, что CustomMinValidator#initialize никогда не вызывает, а MinValidatorForNumber#initialize вызывает.

Как правильно наложить стандартный валидатор?


person gstackoverflow    schedule 31.05.2015    source источник


Ответы (1)


Вы должны «зарегистрировать» свой собственный валидатор ограничений через файл сопоставления ограничений — http://beanvalidation.org/1.1/spec/#xml-mapping-constraintdefinition

В вашем случае вам также необходимо установить include-existing-validators="true", чтобы разрешение валидатора ограничений было уникальным для Numberss.

person Hardy    schedule 01.06.2015
comment
Я не понимаю, как называется файл xml и куда его поместить. - person gstackoverflow; 02.06.2015
comment
Вам нужен validation.xml (основной файл конфигурации для настройки/настройки) Bean Validation). В validation.xml вы добавляете узел сопоставления ограничений - <constraint-mapping>META-INF/validation/my-constraints-mapping.xml</constraint-mapping>, указывающий на XML-файл, соответствующий схеме сопоставления ограничений. См. также docs.jboss .org/hibernate/validator/5.1/reference/en-US/. Также обратите внимание, что не рекомендуется расширять внутренние классы Hibernate Validator. Они могут измениться без уведомлений. Возможно, вам лучше скопировать файл impl. - person Hardy; 02.06.2015