2016-06-16 3 views
1

У меня есть класс, который является чем-то вроде этогоПроверяющих поля типа перед применением пользовательских ограничений валидатора к нему

@MyValidator 
class Demo { 
    @NotNull 
    Instant startDate 
    ... 
} 

В ConstraintValidator для MyValidator ограничения, я делаю вызов, который требует STARTDATE не быть ноль.

Мне не придется беспокоиться об этом, если ограничение @NotNull на startDate проверяется до моего ограничения @MyValidator, но в моих тестах сначала проверяется @MyValidator, и я получаю NPE.

Как я могу указать валидатору, который вызывает мой ConstraintValidator, что ограничение @MyValidator должно быть проверено после ограничения уровня @NotNull на уровне поля или явно проверить ограничение @NotNull как первый шаг в моей реализации ConstraintValidator?

ответ

2

Вы можете управлять порядком проверки, используя группы проверки и групповые последовательности. Информация: Групповая последовательность останавливает проверку, если одна из групп, определенных в групповой последовательности, терпит неудачу.

http://beanvalidation.org/1.1/spec/#constraintdeclarationvalidationprocess-groupsequence

Если вы используете Hibernate Validator, эта ссылка может помочь также: https://docs.jboss.org/hibernate/validator/5.1/reference/en-US/html/chapter-groups.html