Springboot @NotBlank参数校验失效汇总 | 您所在的位置:网站首页 › 王者荣耀巅峰赛巅峰王者证书 › Springboot @NotBlank参数校验失效汇总 |
有时候明明一个微服务里的@Validated 和 @NotBlank 用的好好的,但就是另一个里不能用,这时候问题是最不好排查的,下面列举了各种失效情况的汇总,供各位参考: 1、版本问题springboot切换到2.3.2.RELEASE后失效,将版本换成2.2.2.RELEASE后即可使用正常。原因如下图所示,此时则需要手动加入依赖包进行支持。 需要添加的依赖: org.hibernate.validator hibernate-validator 6.0.17.Final compile 2、使用规范问题 如果只在参数类的属性上使用@NotBlank注解,但是在Controller方法的参数前面没有使用@Validated,那也不会生效,正确应该如下图所示:
如果有嵌套情况,则需要在类的属性上也要加@Valid进行支持,否则被嵌套的参数也是失效的。 如果将@NotBlank用在Integer、Long等非String类型的属性上,也是不会生效的 3、组校验标记不一致哪些标记要一致?简单的说是数据类中的标记和所使用数据类controller方法中的标记不一致;例如: 数据传输类User 的id字段被标记在了Add组,name既在Add组,又在Update组。 一个接口中可定义多组分别校验
id只有在新增的时候可以为空
1、id被标记了Add组,但是controller中新增方法的@Validated没有使用该组(@Valid不支持组校验),则id上所标记的“id不能为空”将是不生效的,postman的测试结果验证了改结论
2、调用更新接口,更新接口方法的@Validated中有Add、Update ,表示user中所有被标记了Add和Update组的属性字段都会生效,postman调用结果如下
可见被标记的所有字段都被成功校验! |
CopyRight 2018-2019 实验室设备网 版权所有 |