javax.validation.NotBlank缺少验证器

时间:2018-04-25 08:09:40

标签: java spring hibernate bean-validation hibernate-validator

我要求在常见的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一样(我的意思是它是否验证了字符串?)

如何解决这个问题?

2 个答案:

答案 0 :(得分: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.0的一部分,并且5.3系列中没有验证器。

答案 1 :(得分:0)

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

files.forEach

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

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

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