校验异常:No validator could be found for constraint 'javax.validation.constraints.Size'

在Java应用程序开发中,我们经常需要对输入参数进行校验,以保证数据的有效性和一致性。Java提供了一套校验规范,即Java Bean Validation规范(JSR 380),通过注解的方式可以方便地对数据进行校验。

然而,在使用校验注解时,有时候会遇到 No validator could be found for constraint 的异常信息。本文将介绍这个异常的原因和解决方案,并通过代码示例来演示如何解决这个问题。

当使用校验注解时,如 @Size 注解,它定义了对字段值的大小进行校验,如果校验不通过,则抛出 javax.validation.ConstraintViolationException 异常。然而,当出现 No validator could be found for constraint 的异常信息时,意味着校验注解没有找到合适的验证器来处理该注解。

要解决 No validator could be found for constraint 的异常,我们需要引入相应的校验器依赖。在上述问题中,我们使用了 @Size 注解,因此需要引入 javax.validation.constraints 包下的 validation-api 依赖。

Maven项目可以通过在 pom.xml 文件中添加以下依赖来解决问题:

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>2.0.1.Final</version>
</dependency>

Gradle项目可以通过在build.gradle文件中添加以下依赖来解决问题:

implementation 'javax.validation:validation-api:2.0.1.Final'

添加依赖后,重新构建项目,即可解决No validator could be found for constraint的异常问题。

接下来,我们通过代码示例来演示如何解决No validator could be found for constraint的异常。

首先,我们定义一个用户类User,包含一个需要校验的字段name

import javax.validation.constraints.Size;
public class User {
    @Size(min = 2, max = 10)
    private String name;
    // 省略构造函数、getter和setter

然后,我们创建一个校验工具类ValidatorUtil,用于对实例进行校验:

import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import java.util.Set;
public class ValidatorUtil {
    private static Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
    public static <T> void validate(T obj) {
        Set<ConstraintViolation<T>> violations = validator.validate(obj);
        for (ConstraintViolation<T> violation : violations) {
            System.out.println(violation.getMessage());

最后,我们在主函数中使用校验工具类对用户对象进行校验:

public class Main {
    public static void main(String[] args) {
        User user = new User();
        user.setName("A"); // 名称长度小于2,校验失败
        ValidatorUtil.validate(user);

当我们运行上述代码时,会发现输出中包含异常信息No validator could be found for constraint。为了解决这个问题,我们需要在pom.xmlbuild.gradle中添加validation-api依赖,然后重新构建项目。

本文介绍了校验异常No validator could be found for constraint的原因和解决方案。通过引入相应的校验器依赖,我们可以解决这个异常问题。同时,通过代码示例演示了如何使用校验注解和校验工具类对数据进行校验。希望本文对你理解和解决这个校验异常问题有所帮助。

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

这是因为@NotBlank是validation-api 2.x才有的。hibernate-validator 6.x 依赖的是validation-api 2.x。所以排除项目中hibernate-validator 6.x 以下的依赖。

javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint

使用hibernate validator出现上面的错误, 需要 注意 @NotNull 和 @NotEmpty 和@NotBlank 区别 @NotEmpty 用在集合类上面@NotBlank 用在String上面@NotNull 用在基本类型上 如果在基本类型上面用NotEmpty或者NotBl

【已解决】javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint

javax.val

javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 解决方法

在使用hibernate validator进行参数有效性校验的时候,我们有时候会遇到javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint ,比如,在我们的应用中,

【Hibernate-Validator错误集】--javax.validation.UnexpectedTypeException: HV000030: No validator could be

错误描述:Method [public org.csun.nc.entity.JsonResult org.csun.nc.controller.OldOutController.oldOutApply(org.csun.nc.pojo.User,org.csun.nc.pojo.

javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'org

1、错误描述2017-01-13 15:39:18,107 [http-apr-8080-exec-5] ERROR [core.interceptor.ExceptionResolverCustom] - HV...