validationexception:无法找到默认提供程序



我向托管bean添加了一些验证(@NotNull),突然得到了这个错误。你知道是什么引起的吗?该应用程序在Apache Tomcat 7中运行。

javax.validation.ValidationException: Unable to find a default provider
javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:264)
javax.validation.Validation.buildDefaultValidatorFactory(Validation.java:111)
javax.faces.validator.BeanValidator.validate(BeanValidator.java:271)
javax.faces.component.UIInput.validateValue(UIInput.java:1127)
javax.faces.component.UIInput.validate(UIInput.java:941)
javax.faces.component.UIInput.executeValidate(UIInput.java:1189)
javax.faces.component.UIInput.processValidators(UIInput.java:691)
javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1080)
javax.faces.component.UIForm.processValidators(UIForm.java:243)
javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1080)
javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1080)
javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1180)
com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)

似乎在应用服务器中应用程序的类路径中没有JSR 303 Bean Validation提供程序。如果您使用的是Glassfish,最好能在$GLASSFISH_INSTALL_ROOT/glassfish/modules目录中验证bean-validator.jar的存在;Glassfish 3.1使用这个JAR(其中包含Hibernate验证器实现)作为默认的JSR 303 Bean验证提供者。我怀疑你使用的是旧版本的Glassfish,或者另一个不包含Bean验证提供程序的应用服务器。

如果必须在类路径中包含Bean Validation提供程序,请考虑阅读ValidationProviderResolver接口的Java API文档,其中指出:

Bean验证提供程序是通过存在的meta - inf/服务/javax.validation.spi。ValidationProvider文件遵循这里描述的服务提供者模式

每个meta - inf/服务/javax.validation.spi

。ValidationProvider文件包含每个ValidationProvider实现的列表代表一个提供者。

因此,如果您在类路径中手动包含Bean验证提供程序,则必须确保在类路径中存在META-INF/services/javax.validation.spi.ValidationProvider文件,并且它包含Bean验证提供程序的名称。下面列出了Glassfish提供的一个的内容,它指向Hibernate Bean Validator类:

org.hibernate.validator.HibernateValidator

相关内容

  • 没有找到相关文章

最新更新