Spring Validation解决后端表单校验

@NotNull:从前台传递过来的参数不能为null,如果为空,会在控制台日志中把message打印出来

@Range:范围,最大多少,最小多少

@Patten,标注的字段值必须符合定义的正则表达式(按照业务规则,进行灵活的正则表达式的校验)

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-validation</artifactId>
</dependency>
复制代码

        为了能够让我们的程序对对象进行校验,需要使用@Valid注解,表示该控制器方法需要进行参数的校验,对后面的参数按照定义的Validation规则进行校验,如果不加@Valid注解,则代表不对SearchParamDTO对象进行校验

        会出现这个异常:无效的、错误的请求信息,因为没有满足我们自定义的验证要求

         

        这些错误信息我们往往要把它包装成json,向前端进行返回,我们要额外开发一个类:
我们增加一个切面,在这个切面中对BindException.class进行拦截,拿到所有的绑定异常,封装成我们要的json结构,然后返回:

 具体的错误信息封装成map返回

 自定义的,向客户端返回我们验证失败的提示信息,有良好的兼容性





 

 另外一个老师这里加了一个全局异常注解:
        当我们的注解不符合要求的时候,会抛出一个绑定异常,我们只需在全局异常拦截这一块,去监控这个绑定异常:

        

 未解决:

        请教下,如果是不同接口用同一个实体类参数,但是校验规则不同怎么便捷的用注解的方式实现校验:
        @Validated(class)这样来注解,然后参数校验上加groups = {class},这样只校验定义了这个class的注解了,class你修改新增用不同的class就行。 

自定义注解:

 

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值