Я пытался реализовать проверку для моего веб-приложения, как описано в разделе 5.7.4.3 документации Spring 3.0:
<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
.
Есть какое-нибудь решение для этого?
EDIT
О LocalValidatorFactoryBean
:
Это центральный класс для настройки javax.validation
(JSR-303) в контексте приложения Spring: он загружает javax.validation.ValidationFactory
и предоставляет его через интерфейс Spring Validator
, а также через JSR-303 * 1034. * интерфейс и сам интерфейс ValidatorFactory
.
Как сказал Алекс Маршалл ниже, это , а не . LocalValidatorFactoryBean
только орудия javax.validation.Validator
.
LocalValidatorFactoryBean
расширяет SpringValidatorAdapter
, что реализует org.springframework.validation.Validator
.