@GetMapping("/test001")
public Object test001(@Validated User user){
return user;
}
当我们使用@Validated 进行数据校验时,如果不做什么处理,可以看到前端直接返回了错误页面:

后端就是打印了一个警告日志:

那么如何获取到错误信息并返回给前端呢?
可以在控制器方法上添加BindingResult 对象,该对象可以获取到错误信息并返回:
@GetMapping("/test001")
public Object test001(@Validated User user, BindingResult result) {
if (result.hasErrors()) {
return result.getFieldError().getDefaultMessage();
}
return user;
}
使用@ControllerAdvice处理BindException ,将错误信息格式化返回:
@Slf4j
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(BindException.class)
public @ResponseBody Object BindException(BindException e) {
e.printStackTrace();
return e.getBindingResult().getFieldError().getDefaultMessage();
}
}