4

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

@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 вызывает.

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

ответ

1

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

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

+0

Я не понимаю, какое имя файла xml и куда его поместить. – gstackoverflow

+0

Вам нужно 'validation.xml' (основной файл конфигурации для настройки/настройки) Проверка Bean). В 'validation.xml' вы добавляете узел сопоставления ограничений -' <ограничение-сопоставление> META-INF/validation/my-constraints-mapping.xml ', указывающий на файл xml, придерживающийся сопоставления ограничений схемы. См. Также http://docs.jboss.org/hibernate/validator/5.1/reference/en-US/html_single/#section-mapping-xml-constraints. Отметим также, что не рекомендуется расширять внутренние классы Hibernate Validator. Они могут изменять без уведомлений. Возможно, вам лучше копировать имп. – Hardy

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