Używam Spring 3.1.1 i Hibernate-validator 4.3.0.Final i mam problem ze zmianą domyślnego MessageInterpolator, który pobiera wiadomości walidacji z ValidationMessages (w ścieżce klas).MessageInterpolator na wiosnę
chcę używać ResourceBundleMessageInterpolator która odbędzie wiadomości z mojego wiosennego MessageSource
zrobiłem coś takiego w mojej aplikacji context.xml:
<bean id="resourceBundleMessageInterpolator"
class="org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator">
<constructor-arg index="0">
<bean class="org.springframework.validation.beanvalidation.MessageSourceResourceBundleLocator">
<constructor-arg index="0" ref="messageSource"/>
</bean>
</constructor-arg>
</bean>
<bean id="validator"
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="messageInterpolator" ref="resourceBundleMessageInterpolator"/>
</bean>
A kiedy zaczynam moją aplikację internetową w postaci kłód I zobacz:
11:04:07,402 DEBUG [org.hibernate.validator.internal.engine.ConfigurationImpl] -
Setting custom MessageInterpolator of type
org.springframework.validation.beanvalidation.LocaleContextMessageInterpolator
11:04:07,402 DEBUG [org.hibernate.validator.internal.engine.ConfigurationImpl] -
Setting custom ConstraintValidatorFactory of type org.springframework .validation.beanvalidation.SpringConstraintValidatorFactory
Tak, jak chcę, nie jest to ResourceBundleMessageInterpolator. To LocaleContextMessageInterpolator
Później, gdy staram się potwierdzić coś, co po prostu wiadomości z ValidationMessages.properties, a nie z komunikatów wiosennej źródła:
11:08:09,397 DEBUG [org.hibernate.validator.resourceloading.PlatformResourceBundleLocator] -
ValidationMessages not found.
11:08:09,413 DEBUG [org.hibernate.validator.resourceloading.PlatformResourceBundleLocator] -
org.hibernate.validator.ValidationMessages found.
Jak widać z aplikacji context.xml chcę use MessageSourceResourceBundleLocator , ale jest używany, nie wiem dlaczego PlatformResourceBundleLocator
Jakieś pomysły?
Wielkie dzięki za odpowiedź. Wcześniej korzystałem z prostszej wersji z setValidationMessageSource, jak napisałeś. Zachowanie było takie, jak opisałem na początku. Chodzi o to, że przegapiłem walidator atrybutów = "validator" w moim . Dodałem atrybut i to działa. –
co zrobić, jeśli korzystam tylko z modułu Spring-Web, a nie Spring-Webmvc? –
gdzie użyć weryfikatora poprawnego w konfiguracji opartej na adnotacji – karthi