就以登录接口为例,如果用户传参的时候没有传递帐号或者密码,会报错,但是报错的信息不够全面,前端人员不好判断是什么问题,这个时候就需要对参数进行一个校验

引入依赖
<dependency><groupId>org.hibernate.validator</groupId><artifactId>hibernate-validator</artifactId><version>6.2.3.Final</version><scope>compile</scope>
</dependency>
| 注解 | 说明 |
|---|---|
| @Null | 限制只能为null |
| @NotNull | 限制必须不为nul(可以为null字符串) |
| @AssertFalse | 限制必须为false |
| @AssertTrue | 限制必须为true |
| @DecimalMax(value) | 限制必须为一个不大于指定值的数字 |
| @DecimalMin(value) | 限制必须为一个不小于指定值的数字 |
| @Digits(integer,fraction) | 限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction |
| @Future | 限制必须是一个将来的日期 |
| @Max(value) | 限制必须为一个不大于指定值的数字 |
| @Min(value) | 限制必须为一个不小于指定值的数字 |
| @Past | 限制必须是一个过去的日期 |
| @Pattern(value) | 限制必须符合指定的正则表达式 |
| @Size(max,min) | 限制字符长度必须在min到max之间 |
| @Past | 验证注解的元素值(日期类型)比当前时间早 |
| @NotEmpty | 验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0) |
| @NotBlank | 验证注解的元素值不为空(不为null、去除首位空格后长度为0),只应用于字符串且在比较时会去除字符串的空格(不能为null字符串) |
| 验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式 |
传参时加入@Validated

![]()
如果没传用户名,将不会执行打印


自定义返回错误信息
这个时候只有后端能看见错误信息,前端依然看不到


添加一个全局异常处理器(来自于springboot)
@RestControllerAdvice // https://blog.csdn.net/user2025/article/details/105458842
public class GlobalExceptionHandler {/*** 自定义验证异常*/@ExceptionHandler(BindException.class)public AjaxResult handleBindException(BindException e) {String message = e.getAllErrors().get(0).getDefaultMessage();return AjaxResult.success(message, null);}
}
捕捉上面错误信息,返回给前端(监听器)
可以捕捉多种异常的信息


这个时候就可以展示给前端

当以上注解无法满足需求,可以用正则表达式
![]()
比如验证电话号码
@Pattern(regexp = "^1[3-9]\\d{9}", message = "手机号码格式有误")private String phone;
