【发布时间】:2009-10-02 11:22:45
【问题描述】:
我尝试按照 Spring 3.0 文档的 5.7.4.3 部分所述为我的 Web 应用程序实施验证:
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="webBindingInitializer">
<bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
<property name="validator">
<bean class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />
</property>
</bean>
</property>
</bean>
我已将 hibernate-validator 添加为依赖项,一切看起来都不错,但启动我的网络应用程序会导致以下错误:
org.springframework.beans.NotWritablePropertyException:
Invalid property 'validator' of bean class
[org.springframework.web.bind.support.ConfigurableWebBindingInitializer]:
Bean property 'validator' is not writable or has an invalid setter method.
Does the parameter type of the setter match the return type of the getter?
查看 API 时,很明显有问题。 LocalValidatorFactoryBean 实现 javax.validation.Validator 而 ConfigurableWebBindingInitializer.setValidator() 期望 org.springframework.validation.Validator。
有什么解决办法吗?
编辑
这是在 Spring 应用程序上下文中设置
javax.validation(JSR-303) 的中心类:它引导javax.validation.ValidationFactory并通过 SpringValidator接口以及 JSR-303 @987654336 公开它@ 接口和ValidatorFactory接口本身。
就像亚历克斯马歇尔在下面所说的那样,不是。 LocalValidatorFactoryBean 只实现了javax.validation.Validator。
LocalValidatorFactoryBean 确实扩展了SpringValidatorAdapter,它实现了org.springframework.validation.Validator。
【问题讨论】:
-
我也试过更新到
hibernate-core-3.5.0.Beta-1,但是Spring的Hibernate代码和这个版本不兼容。 -
在jira.springframework.org/browse/SPR-6189打开了一个JIRA问题。
标签: validation spring hibernate-validator bean-validation