我添加了一些验证(@NotNull
)到托管 bean 并突然收到此错误。有什么想法可能会导致它吗?该应用程序在 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,如果您可以验证是否存在会更好bean-validator.jar
in the $GLASSFISH_INSTALL_ROOT/glassfish/modules
目录; Glassfish 3.1 使用此 JAR(其中包含 Hibernate Validator 实现)作为默认的 JSR 303 Bean Validation 提供程序。我怀疑您使用的是旧版本的 Glassfish,或其他不包含 Bean 验证提供程序的应用程序服务器。
如果必须在类路径中包含 Bean Validation 提供程序,请考虑阅读 Java API 文档以了解ValidationProviderResolver界面 http://download.oracle.com/javaee/6/api/javax/validation/ValidationProviderResolver.html,其中指出:
Bean Validation 提供者通过是否存在来识别
META-INF/services/javax.validation.spi.ValidationProvider 文件
遵循所描述的服务提供商模式here http://java.sun.com/j2se/1.5.0/docs/guide/jar/jar.html#Service%20Provider
每个 META-INF/services/javax.validation.spi.ValidationProvider 文件
包含每个 ValidationProvider 实现的列表
代表一个提供者。
因此,如果您手动在类路径中包含 Bean Validation 提供程序,则必须确保存在META-INF/services/javax.validation.spi.ValidationProvider
文件位于类路径中,并且它包含 Bean Validation 提供程序的名称。下面列出了 Glassfish 提供的一个内容,并指向 Hibernate Bean Validator 类:
org.hibernate.validator.HibernateValidator
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)