我尝试为我的 Web 应用程序实现验证,如Spring 3.0 文档的第5.7.4.3节所述:
<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 添加为依赖项,一切看起来都不错,但启动我的 Web 应用程序会导致以下错误:
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.ValidatorwhileConfigurableWebBindingInitializer.setValidator()期望一个org.springframework.validation.Validator.
有什么解决办法吗?
编辑
这是 Spring 应用程序上下文中 (JSR-303) 设置的中心类
javax.validation:它引导 a并通过 Spring接口以及 JSR-303接口和接口本身javax.validation.ValidationFactory公开它。ValidatorValidatorValidatorFactory
就像亚历克斯马歇尔在下面所说的那样,情况并非如此。LocalValidatorFactoryBean只实现javax.validation.Validator。
LocalValidatorFactoryBean确实扩展SpringValidatorAdapter了,它实现了 org.springframework.validation.Validator.