我有一个弹簧控制器:
@RequestMapping(value = "bulk", method = RequestMethod.POST)
@ResponseBody
public APIResponse createBulkEnquiries(@Valid @RequestBody List<BulkDTO> bulkDTOs) {
// some code
}
Run Code Online (Sandbox Code Playgroud)
它不会验证任何bulkDTO,因为@valid不能直接在Collection元素上运行(尽管BulkDTO是可验证的)。我也不能将List包装在其他一些类中(有效)
public class ValidatableObjectsCollectionWrapper {
@Valid
List<BulkDTO> bulkDTOs;
}
Run Code Online (Sandbox Code Playgroud)
因为它将更改输入json格式。所以我需要其他方法。
我也尝试制作一个自定义验证器进行收集
public class CollectionValidator implements Validator {
private final SpringValidatorAdapter validator;
public CollectionValidator(SpringValidatorAdapter validator) {
super();
this.validator = validator;
}
@Override
public boolean supports(Class<?> clazz) {
return Collection.class.equals(clazz);
}
@Override
public void validate(Object target, Errors errors) {
Collection<Object> objectCollection = (Collection<Object>) target;
for (Object object : objectCollection) {
validator.validate(object, errors);
} …Run Code Online (Sandbox Code Playgroud)