Spring in action @valid验证不生效问题解决

在尝试按照书上示例使用Spring的@Valid进行数据校验时,发现校验并未生效。问题源于缺少Hibernate Validator的实现包,通过Maven导入相关依赖后,仍无法正常工作。进一步排查发现,可能由于Tomcat的类加载问题导致NoClassDefFoundError。在Stack Overflow上找到解决方案,需要引入缺失的validation-api和hibernate-validator依赖,但问题仍未解决。最终,将这些jar包直接放入Tomcat的lib目录下,成功解决了校验不生效的问题。此外,还分享了解决Maven导入jar包在运行时找不到类的通用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

按照书上的示例代码来实现但是,添加了验证但是没有生效。
Spring提供了校验Api是使用但是没有提供实现,所以需要自己导入实现包。
所以导入实现包:

<dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>5.1.1.Final</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/javax.validation/validation-api -->
        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>1.1.0.Final</version>
        </dependency>

但是还是没有解决问题,程序正常运行,校验不生效。
想到之前用Maven来导入一些jar报的时候,还是会提示找不到(不知道是不是因为使用的Xampp自带的tomcat的原因)。之前的解决办法就是把Jar包丢到Tomcat的lib文件夹下。于是就把上面Maven下载下来的两个jar包丢了进去,果然发生了一些变化,这次出现了报错,程序不能正常运行。报错:

Hibernate Validator java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.internal.engine.ConfigurationImpl

然后查找解决办法,在Stack Overflow上找到了解决办法,缺少org.jboss.loggingcom.fasterxml classmate包,所以在Maven中加入

  <dependency>
 	  <groupId>org.jboss.logging</groupId>
      <artifactId>jboss-logging</artifactId>
      <version>3.3.2.Final</version>
  </dependency>
  <dependency>
      <groupId>com.fasterxml</groupId>
      <artifactId>classmate</artifactId>
      <version>1.3.4</version>
  </dependency>

但是还是没有解决问题,使用老办法,把这两个Jar包丢到Tomcat的lib文件夹下,问题解决。

最近遇到好多Maven导入的包在运行的时候不生效的问题,就是不报错,但是运行的时候nodefClass错误。找到解决办法:
IDEA maven项目部署到tomcat的jar包找不到问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值