【发布时间】:2013-09-17 01:55:10
【问题描述】:
我正在 Tomcat 中使用 Weld(org.jboss.weld.servlet:weld-servlet:2.0.2.Final 和 maven)在 Tomcat 中运行一个应用程序来生成 ValidatorFactory 和 Validator 组件,如下所示:
@Produces
@Default
@javax.enterprise.context.ApplicationScoped
public ValidatorFactory getInstance() {
return Validation.byDefaultProvider().configure().buildValidatorFactory();
}
和
@Produces @javax.enterprise.context.ApplicationScoped
public Validator getInstanceValidator() {
return factory.getValidator();
}
当我注入 Validator 并调用方法 Validator.forExecutables() 时,我得到了这个异常:
org.jboss.weld.proxies.Validator$1284425531$Proxy$_$$_WeldClientProxy
cannot be cast to javax.validation.executable
但如果我注入ValidatorFactory 并调用ValidatorFactory.getValidator().forExecutables(),一切正常。
我的代码有问题吗?或者有其他程序可以避免这个错误?
编辑
分析 Hibernate 验证器源代码,我看到 ValidatorImpl 实现了 Validator 和 ExecutableValidator 接口。当weld创建代理时,它只实现Validator接口中的方法,而不是ExecutableValidator方法。
有办法解决这个问题吗?
【问题讨论】:
标签: bean-validation hibernate-validator jboss-weld