【发布时间】:2021-12-30 10:05:43
【问题描述】:
在 Spring 项目 (4.3.14.RELEASE) 中,我需要在 MVC 层中验证 Map<String, List<InnerObj>> map。
为此我编写了一个自定义验证器
public class MapValidator implements ConstraintValidator<ValidMap, Map<String, List<InnerObj>>> {
@Override
public boolean isValid(final Map<String, List<InnerObj>> map,
final ConstraintValidatorContext context) {
if (map == null || map.size() == 0) {
return false;
}
// iterations over all objects and validation
return true;
}
和注释
@Target({METHOD, FIELD, ANNOTATION_TYPE})
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = MapValidator.class)
public @interface ValidMap {
String message() default "valid.map";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
如何强制验证从我的验证器传播(类似于@Valid)到内部对象(List 和InnerObj)?
【问题讨论】:
-
是什么阻止您使用
@Valid? -
@Valid 不适用于地图中的集合
标签: java spring validation