javax.validation.ValidationException:无法找到默认提供程序
我向托管bean添加了一些validation( @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,那么最好能够validation$GLASSFISH_INSTALL_ROOT/glassfish/modules
目录中是否存在bean-validator.jar
; Glassfish 3.1使用此JAR(包含Hibernate Validator实现)作为默认的JSR 303 Bean Validation提供程序。 我怀疑您使用的是较旧版本的Glassfish,或其他不包含Bean Validation提供程序的应用程序服务器。
如果必须在类路径中包含Bean Validation提供程序,请考虑阅读ValidationProviderResolver
接口的Java API文档,该文档指出:
Beanvalidation提供程序由遵循此处描述的服务提供程序模式的META-INF / services / javax.validation.spi.ValidationProvider文件的存在来标识
每个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
- 如何为List创建ConstraintValidator
- 从jsr-303自定义validation器访问数据库
- Hibernatevalidation失败时出现意外的UnsupportedOperationException
- 交叉字段validation(JSR 303)问题
- hibernate唯一密钥validation
- 是否有使用带注释的方法参数启用JSR 303 Bean Validation的标准方法
- 如何在Spring Boot项目中禁用Hibernatevalidation
- 使javaxvalidation错误消息更具体
- unit testing的良好模式形成了在Spring MVC中具有基于注释的validation的bean