代码之家  ›  专栏  ›  技术社区  ›  daredesm

javax。验证。NotBlank缺少验证器

  •  9
  • daredesm  · 技术社区  · 6 年前

    我有一个要求,即在公共api模块(多模块项目)中,我不能使用任何类型的hibernate验证注释,所以我确实使用了javax中的注释。可接受的验证。

    当我想验证包含NotBlank注释的域对象(我使用vaadin)时,问题就出现了。我得到以下异常

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

    通过调用调用验证

    Validation.buildDefaultValidatorFactory().validateValue(beanType, propertyName, value)
    

    相同的代码可以完美地与hibernate的NotBlank配合使用

    另外,javax中的@Size@NotNull也可以正常工作。

    是否可以向DefaultValidatorFactory提供NotBlank验证器实现?

    我是否缺少一些依赖性? (我已经有了hibernate验证器)

    javax中的NotBlank是否与hibernate中的NotBlank工作相同(我的意思是它是否验证字符串?)

    如何解决这个问题?

    3 回复  |  直到 6 年前
        1
  •  13
  •   mark_o    6 年前

    问题出在您当时使用的版本中。您需要更新到6.0。x系列。最新版本为6.0.9。请注意,groupId已更改为org。冬眠验证器。

    <dependency>
        <groupId>org.hibernate.validator</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>6.0.9.Final</version>
    </dependency>
    

    这个 javax.validation.constraints.NotBlank 是的一部分 Bean Validation 2.0 5.3系列中不存在它的验证器。

        2
  •  0
  •   billschen    6 年前

    baeldung.com say 根据JSR 380规范,验证api依赖项包含标准验证api:

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

    Hibernate Validator是验证API的参考实现。 要使用它,我们必须添加以下依赖项:

    <dependency>
       <groupId>org.hibernate.validator</groupId>
       <artifactId>hibernate-validator</artifactId>
    <version>6.0.2.Final</version>
    

    <dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator-annotation-processor</artifactId>
    <version>6.0.2.Final</version></dependency>
    
        3
  •  0
  •   Yaro    3 年前

    验证api 2.0.1包含 javax.validation.constraints.NotBlank 它取代了Hibernate的NotBlank。要使用它,您需要依赖关系:

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

    然后在代码中

    @NotBlank 
    private String possibleBlankString;