Kor*_*tor 6 validation spring hibernate-validator bean-validation
我尝试为我的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>
Run Code Online (Sandbox Code Playgroud)
我已经添加了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?
Run Code Online (Sandbox Code Playgroud)
在查看API时,很明显出现了问题.LocalValidatorFactoryBean
实现javax.validation.Validator
,而ConfigurableWebBindingInitializer.setValidator()
需要一个org.springframework.validation.Validator
.
对此有何解决方案?
编辑
这是
javax.validation
Spring应用程序上下文中(JSR-303)设置的中心类:它引导javax.validation.ValidationFactory
并通过SpringValidator
接口以及JSR-303Validator
接口和ValidatorFactory
接口本身公开它.
就像亚历克斯马歇尔在下面所说的那样情况并非如此.LocalValidatorFactoryBean
只实现javax.validation.Validator
.
LocalValidatorFactoryBean
确实延伸SpringValidatorAdapter
,实现 org.springframework.validation.Validator
.
以下是此问题的解决方法:
使用validator
上面我的问题中的bean配置,您必须使用验证在每个控制器中添加以下代码.
@Autowired
private javax.validation.Validator validator;
@InitBinder
protected void initBinder(WebDataBinder binder) {
binder.setValidator((org.springframework.validation.Validator) this.validator);
}
Run Code Online (Sandbox Code Playgroud)
它很脏,但它的工作原因是LocalValidatorFactoryBean
扩展SpringValidatorAdapter
并实现org.springframework.validation.Validator
.
归档时间: |
|
查看次数: |
7846 次 |
最近记录: |