相关文章推荐
淡定的菠萝  ·  Linux-read 命令(20) - ...·  7 月前    · 
细心的泡面  ·  the json value could ...·  1 年前    · 

HV000030: No validator could be found for constraint ‘javax.validation.constraints.NotEmpty’ validating type ‘java.lang.Integer’. Check configuration for ‘serviceType’

最近项目中参数校验实体类有个tag标签属性,存放的是类型的id,需要做非空校验,我使用的注解是@NotEmpty,但是报错

我自己百度了下,一开始花了十分钟都没有解决,后来经过多次网上查找资料,找到了原因

参数校验非空复习

参考网址:

https://blog.csdn.net/lazy_cat_go/article/details/110638384?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162540639316780269850586%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162540639316780269850586&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2 all first_rank_v2~rank_v29-1-110638384.pc_search_result_cache&utm_term=+HV000030%3A+No+validator+could+be+found+for+constraint+%27javax.validation.constraints.NotEmpty%27+validating+type+%27java.lang.Integer%27.+Check+configuration+for+%27serviceType%27&spm=1018.2226.3001.4187

Null 任意类型 参数值必须是 Null
NotNull 任意类型 参数值必须不是 Null
NotBlank 只能作用于字符串 字符串不能为 null,而且字符串长度必须大于0,至少包含一个非空字符串
NotEmpty CharSequence Collection Map Array 字符串:字符串长度必须大于0,空字符串(“ ”)可以通过校验; Collection:集合大小必须大于0; Map:map的大小必须大于0; Array:数组长度必须大于0;

对于非空校验我们建议使用@NotBlank,因为字符窜需要符合非空字符窜,防止前端传参数为""

复现报错情况

springboot测试的controller方法

* 测试Integer类型得伟数据判空 @ApiOperation ( value = "测试Integer类型判空" ) @ApiImplicitParam ( name = "id" , value = "Integer类型的id,测试Integer类型的非空校验" , example = "1" ) @GetMapping ( "/testValitorIntegr" ) public Result testValitorIntegr ( @Validated @NotBlank ( message = "Integer类型的id不能为空" ) @RequestParam ( value = "id" , required = true ) Integer id ) { System . out . println ( "----------------------" ) ; return Result . ok ( ) ;

正确的书写方式

* 测试Integer类型得伟数据判空 @ApiOperation ( value = "测试Integer类型判空" ) @ApiImplicitParam ( name = "id" , value = "Integer类型的id,测试Integer类型的非空校验" , example = "1" ) @GetMapping ( "/testValitorIntegr" ) public Result testValitorIntegr ( @Validated @NotNull ( message = "Integer类型的id不能为空" ) @RequestParam ( value = "id" , required = true ) Integer id ) { System . out . println ( "----------------------" ) ; return Result . ok ( ) ;

把@NotBlank改为@NotNull

1.字符窜非空校验使用

@NotBlank

2.数值包装类的非空校验使用

@NotNull

3.集合的非空校验使用

@NotEmpty
空校验使用

@NotBlank

2.数值包装类的非空校验使用

@NotNull

3.集合的非空校验使用

@NotEmpty

解决 java x. valid ation.UnexpectedTypeException: HV000030 : No valid a tor could be found for const ra int ' java x. valid ation. const ra int s.NotBlank' valid ating type ' java .lang.Long'. Check configuration for 'id'问题,补充Knife4j介绍,@NotEmpty、@NotBlank等注解的正确使用和ChatGPT的介绍等文章。 这个例子只是校验了一下空参数。如果需要验证邮箱格式和手机号格式校验的话代码会更多,所以介绍一下 valid a tor 通过注解的方式进行校验参数。 什么是 Valid at... Configuration Properties只需要写一次即可,value则需要每个字段都添加 松散绑定,我的yml写的last-name,这个和lastName是一样的,-后main跟着的字母默认是大写的,这就是松散绑定 2021-04-02 14:13:44.191 [http-nio-8103-exec-4] ERROR o.a.c.c.C.[.[.[.[dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java x. valid ation.Unexp java x. valid ation.UnexpectedTypeException: HV000030 : No valid a tor could be found for const ra int java x. valid ation. const ra int s.NotBlank’ valid ating type ‘ java .lang.String’. Check configuration for ‘phoneNumber’ 异常: 这句话的意思是说:不能使用 @NotBlank注解来修饰’ java .lang.Str No valid a tor could be found for const ra int ' java x. valid ation. const ra int s.NotEmpty' valid ating type ' java .lang.Long'. Check configuration for 'id'"报错解决。非空校验注解@NotNull、@NotEmpty、@NotBlank之间的区别和实际运用 No valid a tor could be found for const ra int 'org.hibernate. valid a tor . const ra int s.Length' valid ating type ' java .lang. Int eger'. Check configuration for 'xxxxxx' 错误原因字面翻译是:约束'org.hibernate. valid a tor . const ra int s.Length'验证类型' java .lang. Int eger'找不到验证器。.