Springboot @NotBlank参数校验失效汇总 您所在的位置:网站首页 王者荣耀巅峰赛巅峰王者证书 Springboot @NotBlank参数校验失效汇总

Springboot @NotBlank参数校验失效汇总

2024-03-16 03:24| 来源: 网络整理| 查看: 265

 

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

1、版本问题

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

Springboot @NotBlank参数校验失效汇总

 

需要添加的依赖: org.hibernate.validator hibernate-validator 6.0.17.Final compile 2、使用规范问题

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

Springboot @NotBlank参数校验失效汇总

 

Springboot @NotBlank参数校验失效汇总

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

如果将@NotBlank用在Integer、Long等非String类型的属性上,也是不会生效的

3、组校验标记不一致

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

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

Springboot @NotBlank参数校验失效汇总

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

 

Springboot @NotBlank参数校验失效汇总

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

 

Springboot @NotBlank参数校验失效汇总

 

 

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

Springboot @NotBlank参数校验失效汇总

 

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

Springboot @NotBlank参数校验失效汇总

 

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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有