Spring参数注解,支持数组入参(List)校验
1、controller类增加@Validated注解,对应的数组参数增加@Valid注解。
@Validated
@RestController
@RequestMapping("/parent")
public class ParentController {private FatherRepository fatherRepository;/*** DI*/public ParentController(FatherRepository fatherRepository) {this.fatherRepository = fatherRepository;}@PostMapping("/test")public void test(@RequestBody @Valid List<Father> fathers) {}
}
2、对返回的校验信息异常进行全局捕获,封装后返回。
@RestControllerAdvice
@Component
public class ControllerExceptionHandler {/*** handle controller methods parameter validation exceptions** @param exception ex* @return wrapped result*/@ExceptionHandler@ResponseBody@ResponseStatus(HttpStatus.OK)public DataContainer handle(ConstraintViolationException exception) {Set<ConstraintViolation<?>> violations = exception.getConstraintViolations();StringBuilder builder = new StringBuilder();for (ConstraintViolation<?> violation : violations) {builder.append(violation.getMessage());break;}DataContainer container = new DataContainer(CommonCode.PARAMETER_ERROR_CODE, builder.toString());return container;}
}
参考 https://stackoverflow.com/questions/28150405/validation-of-a-list-of-objects-in-spring