添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
# 1、依赖问题: 查看搭建的SpringBoot项目中 @NotEmpty 是否可以引用,查询资料发现从SpringBoot 2.3.0之后放弃了默认对`javax.validation` 的支持。 ````pom org.springframework.boot spring-boot-starter-validation # 2、注解 @NotBlank:只用在String上,表示传进来的值不能为null,而且调用trim()后,长度必须大于0 @NotNull:不能为null,但可以为empty(分配了内存空间,但值为空) @NotEmpty:不能为null,而且长度必须大于0 @NotBlank://String 不能是 null 且去除两端空白字符后的长度(trimmed length)大于 0。 @NotNull://CharSequence, Collection, Map 和 Array 对象不能是 null, 但可以是空集(size = 0)。 @NotEmpty://CharSequence, Collection, Map 和 Array 对象不能是 null 并且相关对象的 size 大于 0。 # 3、使用方法 其他:https://www.cnblogs.com/whiteme/p/13612652.html ```java 接口类增加@Validated ## 主要试 非实体类的 注解(@NotXX)生效 接口类中方法参数增加@Valid ### 主要使 实体类 生效 实体类中 增加 @NotBlank、@NotEmpty、@NotNull Integer 只能使用:@NotNull 并且@NotNUll和@Pattern不能共用 @GetMapping("/test") public String doWxTrade2( @RequestParam(value = "name", required = false) String name, @NotEmpty @RequestParam(value = "name2", required = true) String name2, @NotNull @RequestParam(value = "age", required = true) Integer age) { System.out.println("进入方法中"); return "执行解析完成"; @PostMapping("/wxPayRegInfo") public CommonResult doRegForZip(@Valid @RequestBody FileParseVo vo) { System.out.println("vo = " + vo); return CommonResult.success("success"); @Data @AllArgsConstructor @NoArgsConstructor public class FileParseVo implements Serializable { @NotBlank(message = "areaCode 不允许为空") private String areaCode; @NotBlank(message = "filePath 不允许为空") private String filePath; @NotNull(message = "fileId 不允许为空") private Integer fileId; # 4、异常问题 ## 问题1: ```bash 使用方式: @NotEmpty(message = "fileId 不允许为空") private Integer fileId; 问题异常:javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'javax.validation.constraints.NotEmpty' validating type 'java.lang.Integer'. Check configuration for 'fileId' at 。。。。 ```bash @NotNull(message = "fileId 不允许为空") private Integer fileId; ## 问题2: 注解不生效问题 方法里面增加 @Valid ```java @PostMapping("/wxPayRegInfo") public CommonResult doRegForZip( @Valid @RequestBody FileParseVo vo) { System.out.println("vo = " + vo); return CommonResult.success("success"); ## 问题3: 嵌套对象注解不生效 ```pom 问题方式: 实体类1: private List xxxInfos; xxxInfo{ @NotNull(message = "fileId 不允许为空") private Integer fileId; @PostMapping("/wxPayRegInfo") public CommonResult doRegForZip( @Valid @RequestBody C1 vo) { System.out.println("vo = " + vo); return CommonResult.success("success"); C1 里面的 xxxInfo 里面的 fileId不生效 ```java @Valid private List xxxInfos; ## 问题4:@NotNUll和@Pattern不能共用 constraint ‘javax.validation.constraints.Pattern‘ validating type ‘java.lang.Integer‘. ```java @NotNull(message = "最低取样数不能为空") @Pattern(regexp = "^[3-9][0-9]{2}|[1-9][0-9]{3}[0-9]*?$") private Integer minSampleSum; javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'javax.validation.constraints.Pattern' validating type 'java.lang.Integer'. Check configuration for 'minSampleSum' 异常原因: 在Spring中如果使用了@NotNull就不能使用@Pattern,两者不能共存。 如果想使用@Pattern可以把属性定义为基本数据类型,@NotNull更换成@NotBlank使用。 ## 问题5: 注解不生效 接口类、方法类上增加@Validated 喜欢小编的可以关注公众号,点击关于我,加入QQ群,群文件有大量大厂Java面试pdf等免费资源!!! ![](https://kuangstudy.oss-cn-beijing.aliyuncs.com/bbs/2021/03/17/kuangstudyc10a932d-ee44-42fe-af23-146dd3f3390e.jpg) 标签: springboot