2016-07-29 5 views
0

Я создал специальный валидатор ограничений, который работает над списком объектов. К сожалению, похоже, что он не вызван, он работал, когда у меня был класс-оболочка, содержащий список с аннотацией в списке.Пользовательский весовой валидатор не вызывается

Это код, который работал прекрасный

public class wrapper { 
    @ValidMyObjectList 
    List<MyObject> myObjects; 
    ... 
} 

Но теперь я избавилась от класса обертки и добавил аннотацию к параметру в методе контроллера.

Вот контроллер

@RequestMapping(value = "", method = RequestMethod.POST) 
    public List<MyObject> stopCheque(
     @ValidMyObjectList @RequestBody final List<MyObject> myObjects, 
     final HttpServletResponse httpServletResponse) { 

    .... 
} 

Вот ограничение аннотацию

@Constraint(validatedBy = MyObjectListValidator.class) 
@Retention(RetentionPolicy.RUNTIME) 
@Target({ ElementType.FIELD, ElementType.PARAMETER }) 
public @interface MyObjectList { 

    Class<?>[] groups() default {}; 

    String message() default ""; 

    Class<? extends Payload>[] payload() default {}; 
} 

И часть валидатора сама

public class MyObjectListValidator implements 
    ConstraintValidator<MyObjectList, List<MyObject>> { 


    @Override 
    public void initialize(final MyObjectList myObjectList) { 
    } 

    @Override 
    public boolean isValid(final List<MyObjectList> myObjectLists, final ConstraintValidatorContext cxt) { 
    ... 
} 

был бы весьма признателен за любую помощь. Благодаря

ответ

2

добавить на Spring класс конфигурации:

@Bean 
public MethodValidationPostProcessor methodValidationPostProcessor() { 
    return new MethodValidationPostProcessor(); 
} 

и добавить @Validated к контроллеру класса.

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