使用Spring Validation检查请求参数
Spring Validation框架的主要作用:实现了简化检查请求参数的基本格式
在Spring Boot中,需要添加spring-boot-starter-validation
依赖项。
当需要检查请求参数时,需要在处理请求的方法的参数列表中,对需要检查的参数添加@Validated
注解,表示此参数是需要通过Spring Validation进行检查的:
@RequestMapping("/add-new")
public String addNew(@Validated AlbumAddNewDTO albumAddNewDTO) {
// 省略方法体的代码
}
然后,在类的属性上,添加相关检查注解,并在检查注解中配置message
属性以指定错误时的提示文本:
@Data
public class AlbumAddNewDTO implements Serializable {
@NotNull(message = "必须提交相册名称!")
private String name;
private String description;
private Integer sort;
}
当Spring Validation检查不通过时,将抛出BindException
,所以,可以在统一处理异常的类中对此类异常进行处理:
@ExceptionHandler
public String handleBindException(BindException e) {
log.debug("处理BindException:{}", e.getMessage());
StringBuilder stringBuilder = new StringBuilder();
List<FieldError> fieldErrors = e.getFieldErrors();
for (FieldError fieldError : fieldErrors) {
String message = fieldError.getDefaultMessage();
stringBuilder.append(message);
}
return stringBuilder.toString();
}
除了@NotNull
以外,框架还提供了许多检查注解,
@Pattern
:通过此注解的regexp
属性配置正则表达式,并使用message
配置验证失败时的提示文本- 注意:此注解只能添加在字符串类型的属性上
- 注意:此注解不能检查“为
null
”的情况,如果不允许为null
,则必须同时配置@NotNull
和@Pattern
@Range
:通过此注解的min
和max
属性可以指定整型数据的最小值和最大值- 提示:此注解可以和
@NotNull
一起使用
- 提示:此注解可以和