springboot 优雅的参数校验_Springboot @NotBlank参数校验失效汇总

有时候明明一个微服务里的@Validated 和 @NotBlank 用的好好的,但就是另一个里不能用,这时候问题是最不好排查的,下面列举了各种失效情况的汇总,供各位参考:

1、版本问题

springboot切换到2.3.2.RELEASE后失效,将版本换成2.2.2.RELEASE后即可使用正常。原因如下图所示,此时则需要手动加入依赖包进行支持。

1fb8cbf57b8bc31d48dbca32de47f899.png
 需要添加的依赖:org.hibernate.validator      hibernate-validator      6.0.17.Finalcompile

2、使用规范问题

如果只在参数类的属性上使用@NotBlank注解,但是在Controller方法的参数前面没有使用@Validated,那也不会生效,正确应该如下图所示:

24d97bada8ebe68859f1b86f58dc9665.png
788cc9acafecb573986a7cdd470245ad.png

如果有嵌套情况,则需要在类的属性上也要加@Valid进行支持,否则被嵌套的参数也是失效的。

3、组校验标记不一致

哪些标记要一致?简单的说是数据类中的标记和所使用数据类controller方法中的标记不一致;例如:

数据传输类User 的id字段被标记在了Add组,name既在Add组,又在Update组。

1b13fa78c4c30f0c527c18d1819d9f11.png

一个接口中可定义多组分别校验

356d92ff915fec5da5fcca74a604dba6.png

id只有在新增的时候可以为空

2f4c678a25bf995613bcb7469556c346.png

1、id被标记了Add组,但是controller中新增方法的@Validated没有使用该组(@Valid不支持组校验),则id上所标记的“id不能为空”将是不生效的,postman的测试结果验证了改结论

025f72f3c033683d253bb31c96ad336b.png

2、调用更新接口,更新接口方法的@Validated中有Add、Update ,表示user中所有被标记了Add和Update组的属性字段都会生效,postman调用结果如下

58d80598c374302088dc351acaed507b.png

可见被标记的所有字段都被成功校验!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值