javax.validation.NotBlank缺少验证器

问题描述 投票:7回答:2

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

当我想验证包含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-validator)

来自javax的NotBlank和来自hibernate的NotBlank一样(我的意思是它验证字符串吗?)

怎么解决这个?

java spring hibernate bean-validation hibernate-validator
2个回答
8
投票

问题出在你正在使用的版本中。您需要更新到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.0is部分和验证器在5.3系列中没有出现。


0
投票

作为baeldung.com say根据JSR 380规范,validation-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>
© www.soinside.com 2019 - 2024. All rights reserved.