我要求在通用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.NotBlank
是Bean Validation 2.0的一部分,并且它的验证程序在5.3系列中不存在。