2016-08-29 7 views
0

Spring 4.3.2SmartValidator - вручную вызова проверки с группами

нужно вызвать SmartValidator.validate() вручную и мне нужно использовать группы проверки, которые я определил на целевой объект. Javadoc говорит, что это ...

«Этот вариант Validate() поддерживает подсказки проверки, такие как группы проверки в отношении поставщика JSR-303 (в этом случае, в предоставляемых объектов намека должны быть аргументами аннотаций типа).

void validate(Object target, 
      Errors errors, 
      Object... validationHints) 

По некоторым причинам, я не могу найти много информации или примеры по использованию «validationHints». Поэтому я пробовал такие вещи, как следующее ...

validator.validate(targetEntity, errors, new Class[]{ValidationGroup1.class}); 

validator.validate(targetEntity, errors, ValidationGroup1.class); 

До сих пор он просто полностью игнорировал мои группировки. Он всегда вызывает все валидаторы. Есть идеи?

Спасибо!

===================================

Обновление: Javadoc также говорит, что это ..

«Примечание: Validation подсказка может получить игнорироваться фактической целью Validator, в этом случае этот метод должен вести себя так же, как его регулярно Validator.validate (Object, ошибка) собрат»

Это похоже на то, что происходит. Но он не дает никакого представления о том, почему он может игнорировать его.

ответ

1

Хорошо. Кажется, что «ответ» - не использовать Spring для этого. Вот мой обходной путь ...

import javax.validation.Validator; 
Validator validator = Validation.buildDefaultValidatorFactory().getValidator(); 
Set<ConstraintViolation> violations = validator.validate(targetEntity, new Class[]{group1.class, group2.class}); 

Затем я преобразующих Установите Спринг FieldErrors (так как все уже настроено для запуска Spring). Вид кластера ***, но по крайней мере он работает сейчас.

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

  • Нет связанных вопросов^_^