hibernate Javax.validation.NotBlank缺少验证器

agyaoht7  于 2022-11-14  发布在  Java
关注(0)|答案(4)|浏览(218)

我要求在公共API模块(多模块项目)中不能使用任何类型的Hibernate的验证注解,所以我确实使用了一个来自javax.valify的注解,这是可以接受的。
当我想要验证包含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验证器实现?
我是不是错过了一些依赖?(我已经有了休眠验证器)
来自javax的NotBlank与来自Hibernate的NotBlank的工作方式相同吗(我的意思是,它是否验证字符串?)
如何解决这一问题?

gzjq41n4

gzjq41n41#

问题出在您正在使用的版本中。您需要更新到6.0.x系列。目前的最新版本是6.0.9。请注意,groupID被更改为org.hibernate.validator。

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

javax.validation.constraints.NotBlankBean Validation 2.0的一部分,在5.3系列中不提供验证器。

sqougxex

sqougxex2#

作为符合JSR 380规范的baeldung.com say,验证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>
iyzzxitl

iyzzxitl3#

验证-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;
rqqzpn5f

rqqzpn5f4#

将以下依赖项添加到pom.xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

如果更改没有生效,则重新启动IntelliJ Idea。

相关问题