Ответ 1
Эти встроенные средства обрабатываются специальным образом, а их валидаторы настроены программно.
Для Hibernate Validator это делается в ConstraintHelper.java
. Я думаю, вы не можете достичь того же для своих пользовательских ограничений.
Я заметил, что все встроенные ограничения имеют пустое значение для параметра validatedBy
в @Constraint
. т.е. @Constraint(validatedBy = {})
Во-первых, почему им разрешено иметь пустое значение для validatedBy
? Я думал, вы можете оставить его пустым только для композиции ограничений, которая не требует дополнительной проверки?
Также обратите внимание, что Hibernate Validator все еще может найти класс реализации валидатора для каждого встроенного ограничения, несмотря на то, что validatedBy
пуст, но если я оставлю пустое значение validatedBy для моего ограничения, мой пользовательский валидатор никогда не будет поднят, Почему это?
Спасибо.
Эти встроенные средства обрабатываются специальным образом, а их валидаторы настроены программно.
Для Hibernate Validator это делается в ConstraintHelper.java
. Я думаю, вы не можете достичь того же для своих пользовательских ограничений.
Возможно, посмотрите на этот ответ:
Как избежать перекрестной зависимости между слоями из-за @Constraint validatedBy?
И эти две ссылки:
Добавление ограничений программно: http://docs.jboss.org/hibernate/stable/validator/reference/en-US/html/validator-specifics.html#section-programmatic-api
Добавление ограничений на xml: http://docs.jboss.org/hibernate/validator/4.1/reference/en-US/html/validator-xmlconfiguration.html