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

网友投稿 257 2022-10-20


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

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

按照书上的示例代码来实现但是,添加了验证但是没有生效。

Spring提供了校验Api是使用但是没有提供实现,所以需要自己导入实现包。

所以导入实现包:

org.hibernate

hibernate-validator&ltsLqzCwcN;/artifactId>

http:// 5.1.1.Final

javax.validation

validation-api

1.1.0.Final

但是还是没有解决问题,程序正常运行,校验不生效。

想到之前用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.logging和com.fasterxml classmate包,所以在Maven中加入

org.jboss.logging

jboss-logging

3.3.2.Final

com.fasterxml

classmate

1.3.4

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

最近遇到好多Maven导入的包在运行的时候不生效的问题,就是不报错,但是运行的时候nodefClass错误。

找到解决办法:解决idea导入maven项目缺少jar包的问题方法

springboot @Validate不生效的原因

使用validate相关注解却没用生效的问题

public class LoginRequest implements Serializable {

private static final long serialVersionUID = 1L;

@ApiModelProperty(value = "手机号", required = true, example = "18888888")

@Pattern(regexp = RegularConstants.PHONE, message = "手机号码格式错误")

@jsonProperty(value = "phone")

private String phone;

@ApiModelProperty(value = "密码", required = true, example = "1~[6,18]")

@Pattern(regexp = RegularConstants.PASSWORD, message = "密码格式错误,密码必须以字母开头,长度在6~18之间,只能包含字符、数字和下划线")

private String password;

}

解决思路

引入hibernate相关依赖

org.hibernate.validator

hibernate-validator

6.0.21.Final

javax.el

javax.el-api

3.0.0

相关配置

@Configuration

public class ValidatorConfiguration {

@Bean

public Validator validator() {

ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class)

.configure()

.addProperty("hibernate.validator.fail_fast", "true")

.buildValidatorFactory();

return validatorFactory.getValidator();

}

}

全局拦截验证错误

@RestControllerAdvice

public class WebGlobalExceptionHandler {

// private static final Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);

/**

* 拦截JSON参数校验

*/

// @ResponseStatus(HttpShttp://tatus.OK)

@ExceptionHandler(MethodArgumentNotValidException.class)

public CommonResult bindException(MethodArgumentNotValidException e) {

BindingResult bindingResult = e.getBindingResult();

return CommonResult.failed(ExceptionCodeEnum.VALIDATE_FAILED,Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:#yyds干货盘点# 计算机网络的功能
下一篇:山石发声 | 算网融合下,云数据中心面临的挑战怎么破?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~