我要求在通用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)

相同的代码与休眠的NotBlank完美配合

javax的@Size @NotNull也可以正常工作。

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

我缺少一些依赖吗?
(我已经有休眠验证器)

javax的NotBlank是否与hibernate的NotBlank相同(我是说它会验证字符串吗?)

如何解决呢?

最佳答案

问题出在您当时使用的版本中。您需要更新到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系列中不存在。

08-27 15:23