首页 专题 文章 代码 归档
SpringBoot验证类中字段
2020.05.17 17:20 2020.05.17 20:39

1. 前言

在实际项目中,一般情况下,可能都有很多字段为空等验证,那么如何做才能不用谢if-else等语句

也即是说,优雅的判断是否为空等操作?

我们可以使用validation来校验传入的参数

2. 步骤

2.1. 添加包

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

当然,如果你加上spring-boot-starter-web的话,默认也就有了,不需要额外加

添加包后,就可以使用注解言自定义验证了

在实体类中,使用诸如@NotBlank之类的注解,就可以验证了

@NotBlank(message = "用户名不能为空")
private String username;
@NotBlank(message = "密码不能为空")
private String password;

两个问题:

1、有哪些注解可供使用?

2、如何返回验证失败的中,我们定义的message信息?

2.2. 使用

在需要验证的地方使用@Valid注解即可,一般也就在Controller中使用,比如:

截图-1589713832

2.3. 可用注解

# JSR提供的校验注解:         
@Null   被注释的元素必须为 null    
@NotNull    被注释的元素必须不为 null    
@AssertTrue     被注释的元素必须为 true    
@AssertFalse    被注释的元素必须为 false    
@Min(value)     被注释的元素必须是一个数字,其值必须大于等于指定的最小值    
@Max(value)     被注释的元素必须是一个数字,其值必须小于等于指定的最大值    
@DecimalMin(value)  被注释的元素必须是一个数字,其值必须大于等于指定的最小值    
@DecimalMax(value)  被注释的元素必须是一个数字,其值必须小于等于指定的最大值    
@Size(max=, min=)   被注释的元素的大小必须在指定的范围内    
@Digits (integer, fraction)     被注释的元素必须是一个数字,其值必须在可接受的范围内    
@Past   被注释的元素必须是一个过去的日期    
@Future     被注释的元素必须是一个将来的日期    
@Pattern(regex=,flag=)  被注释的元素必须符合指定的正则表达式    


# Hibernate Validator提供的校验注解:  
@NotBlank(message =)   验证字符串非null,且trim后长度必须大于0    
@Email  被注释的元素必须是电子邮箱地址    
@Length(min=,max=)  被注释的字符串的大小必须在指定的范围内    
@NotEmpty   被注释的字符串的必须非空    
@Range(min=,max=,message=)  被注释的元素必须在合适的范围内

2.4. 异常捕获

这就需要全局异常捕获啦

我们这里捕获这个异常即可:MethodArgumentNotValidException

@ExceptionHandler(value = MethodArgumentNotValidException.class)
public AppResult<Object> argumentsHandler(MethodArgumentNotValidException e) {
    BindingResult bindingResult = e.getBindingResult();
    FieldError fieldError = bindingResult.getFieldError();
    assert fieldError != null;
    return AppResultBuilder.fail(fieldError.getDefaultMessage());
}

然后,获取getDefaultMessage,其中就是我们之前使用注解定义的message消息

本节阅读完毕! (分享
二维码图片 扫描关注我们哟