我已经创建了一个适用于对象列表的自定义约束验证器。不幸的是,它似乎没有被调用,当我有一个包含列表并在列表中带有注释的包装类时它起作用。
这是运行良好的代码
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) {
...
}
非常感谢任何帮助。感谢
答案 0 :(得分:3)
添加到Spring配置类:
@Bean
public MethodValidationPostProcessor methodValidationPostProcessor() {
return new MethodValidationPostProcessor();
}
并将@Validated添加到控制器类。