- 关于Validation框架的基本使用:
- 添加依赖
- 在控制器类中处理请求的方法的被验证的参数(封装的对象)之前添加
@Validated
/ @Valid
- 在参数的类型(封装的类型)的属性之前添加验证注解
- 在统一处理异常的类中对
BindException
进行处理
- 添加依赖
<!-- Spring Boot Validation:验证请求参数的基本格式 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
- 在
CategoryController
处理请求的方法的参数之前添加@Validated
/ @Valid
注解:
@PostMapping("/add-new")
public JsonResult<Void> addNew(@Validated CategoryAddNewDTO categoryAddNewDTO) {
categoryService.addNew(categoryAddNewDTO);
return JsonResult.ok();
}
- 在
pojo
中的,要在此类中添加@NotNull
等注解
@Data
public class CategoryAddNewDTO implements Serializable {
@NotNull(message = "添加类别失败,必须填写类别名称!")
private String name;
}
- 在
State
中添加对应“请求参数格式错误”的枚举值:
public enum State {
OK(20000),
ERR_BAD_REQUEST(40000),
}
- 在
GlobalExceptionHandler
中添加新的处理异常的方法:
@ExceptionHandler(BindException.class)
public JsonResult<Void> handleBindException(BindException ex) {
List<FieldError> fieldErrors = ex.getBindingResult().getFieldErrors();
StringBuilder stringBuilder = new StringBuilder();
for (FieldError fieldError : fieldErrors) {
stringBuilder.append(";");
stringBuilder.append(fieldError.getDefaultMessage());
}
String message = stringBuilder.substring(1);
return JsonResult.fail(State.ERR_BAD_REQUEST, message);
}