我要求在公共API模块(多模块项目)中不能使用任何类型的Hibernate的验证注解,所以我确实使用了一个来自javax.valify的注解,这是可以接受的。
当我想要验证包含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验证器实现?
我是不是错过了一些依赖?(我已经有了休眠验证器)
来自javax的NotBlank与来自Hibernate的NotBlank的工作方式相同吗(我的意思是,它是否验证字符串?)
如何解决这一问题?
4条答案
按热度按时间gzjq41n41#
问题出在您正在使用的版本中。您需要更新到6.0.x系列。目前的最新版本是6.0.9。请注意,groupID被更改为org.hibernate.validator。
javax.validation.constraints.NotBlank
是Bean Validation 2.0的一部分,在5.3系列中不提供验证器。sqougxex2#
作为符合JSR 380规范的baeldung.com say,验证API依赖项包含标准验证API:
Hibernate Validator是验证API的参考实现。要使用它,我们必须添加以下依赖项:
iyzzxitl3#
验证-API 2.0.1包含
javax.validation.constraints.NotBlank
,它取代了Hibernate的NotBlank。要使用它,您需要依赖项:然后用代码
rqqzpn5f4#
将以下依赖项添加到
pom.xml
:如果更改没有生效,则重新启动IntelliJ Idea。