Java参数验证@Validated

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

引入依赖

XML 复制代码
<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 验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式

传参时加入@Validated

如果没传用户名,将不会执行打印

自定义返回错误信息

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

添加一个全局异常处理器(来自于springboot)

java 复制代码
@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);
    }
}

捕捉上面错误信息,返回给前端(监听器)

可以捕捉多种异常的信息

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

当以上注解无法满足需求,可以用正则表达式

比如验证电话号码

java 复制代码
 @Pattern(regexp = "^1[3-9]\\d{9}", message = "手机号码格式有误")
    private String phone;
相关推荐
We་ct13 分钟前
LeetCode 5. 最长回文子串:DP + 中心扩展
前端·javascript·算法·leetcode·typescript
做怪小疯子3 小时前
华为笔试0429
python·numpy
Warson_L3 小时前
Dictionary
python
JAVA面经实录9173 小时前
Java企业级工程化·终极完整版背诵手册(无遗漏、全覆盖、面试+落地通用)
java·开发语言·面试
陈随易4 小时前
有生之年系列,Nodejs进程管理pm2 v7.0发布
前端·后端·程序员
冰暮流星4 小时前
javascript之事件代理/事件委托
前端
许彰午5 小时前
CacheSQL(二):主从复制——OpLog 环形缓冲区与故障自动恢复
java·数据库·缓存
寒山李白5 小时前
解决 python-docx 生成的 Word 文档打开时弹出“无法读取内容“警告
python·word·wps·文档·docx·qoder
陈随易6 小时前
AI时代,你还在坚持手搓文章吗
前端·后端·程序员
2401_832365526 小时前
JavaScript中rest参数(...args)取代arguments的优势
jvm·数据库·python