解决No validator could be found for constraint ‘javax.validation.constraints.NotBlank‘ validating type

这篇具有很好参考价值的文章主要介绍了解决No validator could be found for constraint ‘javax.validation.constraints.NotBlank‘ validating type。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 复现问题

今天在使用Knife4j调用后端接口,报出如下错误:

解决No validator could be found for constraint ‘javax.validation.constraints.NotBlank‘ validating type

javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'javax.validation.constraints.NotBlank' validating type 'java.lang.Long'. Check configuration for 'id'
	at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.getExceptionForNullValidator(ConstraintTree.java:116)
	at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.getInitializedConstraintValidator(ConstraintTree.java:162)
	at org.hibernate.validator.internal.engine.constraintvalidation.SimpleConstraintTree.validateConstraints(SimpleConstraintTree.java:54)
	at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:75)
	at org.hibernate.validator.internal.metadata.core.MetaConstraint.doValidateConstraint(MetaConstraint.java:130)
	at org.hibernate.validator.internal.metadata.core.MetaConstraint.validateConstraint(MetaConstraint.java:123)
	at org.hibernate.validator.internal.engine.ValidatorImpl.validateMetaConstraint(ValidatorImpl.java:555)
	at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForSingleDefaultGroupElement(ValidatorImpl.java:518)
	at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForDefaultGroup(ValidatorImpl.java:488)
	at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForCurrentGroup(ValidatorImpl.java:450)
	at org.hibernate.validator.internal.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:400)
	at org.hibernate.validator.internal.engine.ValidatorImpl.validate(ValidatorImpl.java:172)
	at org.springframework.validation.beanvalidation.SpringValidatorAdapter.validate(SpringValidatorAdapter.java:109)
	at org.springframework.boot.autoconfigure.validation.ValidatorAdapter.validate(ValidatorAdapter.java:65)
	at org.springframework.validation.DataBinder.validate(DataBinder.java:895)
	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.validateIfApplicable(AbstractMessageConverterMethodArgumentResolver.java:245)
	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:137)
	at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)
	at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:170)
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)
	......

javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'javax.validation.constraints.NotBlank' validating type 'java.lang.Long'. Check configuration for 'id'

2. 分析问题

正赶上最近ChatGPT很火,于是借助ChatGPT来解决我的问题,如下所示:

解决No validator could be found for constraint ‘javax.validation.constraints.NotBlank‘ validating type

This means that the constraint “NotBlank” is not valid for a Long type value in the field “id”. A Long type cannot support the NotBlank constraint. You should either remove the NotBlank annotation or use another type such as a String.

芭比Q的是ChatGPT是英文解释,我们不妨翻译成中文,如下所示:

这意味着约束“NotBlank”对于字段“id”中的长整型类型值无效。Long 类型不能支持 NotBlank 约束。应删除NotBlank注解或使用其他类型(如字符串)。

从中文翻译来看,由于id的类型是长整型的,而NotBlank不能修饰长整型,如下是我的代码:

/** 
 * 自定义组件id 
 * */
@NotBlank(message = "自定义组件id不能为空")
@ApiModelProperty(name = "id", value = "自定义组件id", required = true, example = "1")
private Long id;

但其给出两个解决方案:

  1. 删除NotBlank注解

  2. 使用其他数据类型(如字符串)

显然,这两种方式都无法解决我的问题。

因为id一般都是长整型,因而不能修改其类型,而又不能删除注解,因为必须限制id不能为空。

id不能为空,因而,我们可以考虑不能为空的注解,即@notNull

3. 解决问题

既然@NotBlank注解不能修饰长整型等,而@NotNull注解可以修饰长整型,因而可以进行如下修改:

/**
 * 自定义组件id
 * */
@NotNull(message = "自定义组件id不能为空")
@ApiModelProperty(name = "id", value = "自定义组件id", required = true, example = "1")
private Long id;

重新启动服务后调用接口,即可成功访问,如下图所示:

解决No validator could be found for constraint ‘javax.validation.constraints.NotBlank‘ validating type

此外,@NotBlank注解除了不能修饰长整型,也不能修饰浮点型,布尔型等。

因为@NotBlank注解只能作用在String上,不能为null。而且调用trim()后,长度必须大于0 ("test") ,即必须有实际字符。

4. 重要补充

  1. @NotNull注解

    • 不能为null

    • 可以为empty ,比如""," "

  2. @NotEmpty注解

    • 不能为null

    • 而且长度必须大于0,比如" "

    • 只能使用在字符串上

5. 其他说明

  1. 如果你对Knife4j比较感兴趣,可以参考这篇博文:全网最全的Knife4j swaggerj介绍

  2. 如果你对@NotEmpty、@NotBlank等注解感兴趣,可以参考这篇博文:@NotEmpty、@NotBlank等注解的正确使用文章来源地址https://www.toymoban.com/news/detail-506373.html

到了这里,关于解决No validator could be found for constraint ‘javax.validation.constraints.NotBlank‘ validating type的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity 3D提示“No valid unity editor license found, please active your license”如何解决?

            初次安装Unity 3D,打开提示“No valid unity editor license found, please active your license”,不妨尝试一下本文的方法。 进入Unity3D中文下载官网, https://unity.cn/releases(Unity 3D安装包也可以通过此渠道下载); 需要登录(如没有账号先注册,很简单); 下载Unity Hub;  打开

    2024年02月11日
    浏览(55)
  • No valid Maven installation found.

    No valid Maven installation found. Either set the home directory in the configuration dialog or set the M2_HOME environment variable on your system. 未找到有效的Maven安装。在配置对话框中设置主目录或在系统上设置M2_home环境变量。 --------------------- 解释一下 :环境变量出错 自己的配的话自己去系统配置里面看

    2024年02月13日
    浏览(53)
  • 解决Maven中No valid Maven installation found. Either set the home directory in the configuration dialog

    IDEA 导入maven项目,会报错 No valid Maven installation found. Either set the home directory in the configuration dialog or set the M2_HOME environment variable on your system 。 由于创建Maven工程时引入一些新的依赖,或者加入了新的实体类,mapper映射,我们都会选择 在这里点一下clean,进行一次清理重新加载

    2024年02月11日
    浏览(44)
  • ElementPlusError: [ElOnlyChild] no valid child node found

    今天在使用element-plus的el-tooltip 时候一直报这个错误 最后我查看了一下它的检测源代码 他会去检测你的这个子子元素,因为渲染的条件执行原因 在渲染el-tooltip的时候子元素还没有渲染出来 所以他会报错因此在里面加上一层元素就可以,我用了span进行了包裹

    2024年02月12日
    浏览(45)
  • log4j警告之log4j:WARN No appenders could be found for logger

    目录 1. 警告信息  2. 错误解读  3.解决办法   错误输出信息: log4j:WARN No appenders could be found for logger (org.apache.flink.api.java.utils.PlanGenerator). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 如果找不到默认配置文件log4j

    2024年02月14日
    浏览(55)
  • 解决javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException

    Java Spring应用发送数据报如下问题。 用httpclient访问https资源时,会出现异常,与环境也有关系,有些机器请求正常。 1.复制 附录 代码到文本文件中,改名为InstallCert.java。然后在命令行中执行命令,编译InstallCert.java:  2.再执行以下命令: 说明:网址处不需要输入(https://)信

    2024年02月16日
    浏览(46)
  • Unity安装后无法打开(No valid Unity Editor license found)

    Unity 下载点击后出现如下界面:  (图片自己运行时没有截屏,找的知乎作者PISCOnoob NOOB wanna be PRO的图) 解决办法1:下载unity hub 登陆后可打开  其他解决办法……(因为这样就好了,还没遇见其他类似问题,以后遇见了再增添)  

    2024年02月06日
    浏览(36)
  • git报错The project you were looking for could not be found 解决方式

    一、拉代码报错The project you were looking for could not be found 问题描述: 使用git从远程仓库克隆项目到本地的时候。 出现这个问题:The project you were looking for could not be found. 原因分析: 你的账号没有项目的权限,你可以在浏览器输入你的项目地址,如果可以进入,则说明有权限;

    2024年02月04日
    浏览(68)
  • 解决 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX 路径构建失败

    之前一个项目使用Java请求客户提供的接口时,返回报错如下: javax.net.ssl.SSLHandshakeException 错误通常表示 SSL 握手失败。这意味着在建立 SSL 连接时,Java 安全管理器无法构建一个有效的证书路径,从而无法找到有效的证书路径来验证目标站点的证书,触发此错误信息的调用方

    2024年02月04日
    浏览(48)
  • 解决 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path buildin

    接口访问https的网址时,报以下错误: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 原因: JAVA的证书库里已经带了startssl ca证书,而nginx默认不带s

    2024年02月15日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包