I have a spring controller :
@RequestMapping(value = "bulk", method = RequestMethod.POST)
@ResponseBody
public APIResponse createBulkEnquiries(@Valid @RequestBody List<BulkDTO> bulkDTOs) {
// some code
}
It is not validating any of the bulkDTOs as @valid do not work on element of Collection directly (although BulkDTO is validatable). Also I can not wrap List in some other class (which works) like
public class ValidatableObjectsCollectionWrapper {
@Valid
List<BulkDTO> bulkDTOs;
}
because it will change input json format. So I need some other way around.
I also tried to make a custom validator for collection
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);
}
}
}
But Don't know how to invoke or bind it on the controller param.