小编Sus*_*mar的帖子

如何在不将List包装在其他类中的情况下验证spring控制器中List中的每个对象?

我有一个弹簧控制器:

@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)

java spring hibernate

3
推荐指数
1
解决办法
2021
查看次数

标签 统计

hibernate ×1

java ×1

spring ×1