pom文件添加依赖
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.2.2.Final</version>
</dependency>
创建测试控制器
@RestController
@RequestMapping("/test")
public class TestController {
@PostMapping("/postTest")
public String postTest(@RequestBody @Validated PostTestParam param) {
return "("+param.getParam1()+")";
}
}
@Data
class PostTestParam{
@NotBlank(message = "参数不能为空")
private String param1;
}
启动项目发现参数校验已经生效了。但是接口返回数据为
{
"timestamp": "2021-03-02T08:35:02.957+00:00",
"status": 400,
"error": "Bad Request",
"message": "",
"path": "/test/postTest"
}
通过增加全局异常处理器,定义返回数据格式
@RestControllerAdvice
public class BadRequestExceptionHandler {
private static final Logger logger = LoggerFactory.getLogger(BadRequestExceptionHandler.class);
/**
* 校验错误拦截处理
*
* @param exception 错误信息集合
* @return 错误信息
*/
@ExceptionHandler(MethodArgumentNotValidException.class)
public String validationBodyException(MethodArgumentNotValidException exception){
BindingResult result = exception.getBindingResult();
//返回自定义错误格式
//fieldError.getDefaultMessage()为实体类中的message
return result.getFieldError().getDefaultMessage();
}
}
效果: