javax.validation.NotBlank缺少验证器

dar*_*esm 7 java spring hibernate hibernate-validator bean-validation

我要求在常见的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'
Run Code Online (Sandbox Code Playgroud)

通过调用调用验证

Validation.buildDefaultValidatorFactory().validateValue(beanType, propertyName, value)
Run Code Online (Sandbox Code Playgroud)

相同的代码与hibernate的NotBlank完美配合

来自javax的@Size @NotNull工作正常.

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

我错过了一些依赖吗?(我已经有了hibernate-validator)

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

怎么解决这个?

小智 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>
Run Code Online (Sandbox Code Playgroud)

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

  • 在父模块中,我们有最新版本的hibernate-validator(属性).但是在我使用的模块中,我也有vaadin依赖,它依赖于spring-boot-starter-web,它具有这个旧的验证器版本.我以为我有最新款的.很高兴,快点!谢谢 (2认同)