Ich benutze Spring 3.1.1 und Hibernate-Validator 4.3.0.Final und habe ein Problem mit der Änderung der Standard-MessageInterpolator, die Validierung Nachrichten von ValidationMessages (in Classpath) dauert.MessageInterpolator im Frühjahr
Ich will ResourceBundleMessageInterpolator verwenden, welche Nachrichten von meiner Feder Message
Ich habe so etwas in meiner Anwendung-context.xml nehmen:
<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>
Und wenn ich meine Web-Anwendung in Protokollen beginnen I siehe:
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
so wie Sie sehen können, ist es nicht ResourceBundleMessageInterpolator, die ich will. Es ist LocaleContextMessageInterpolator
Später, wenn ich versuche, etwas zu bestätigen bekomme ich nur die Nachrichten von ValidationMessages.properties, nicht aus Federnachrichtenquelle:
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.
Wie Sie aus anwendungs context.xml sehen kann ich MessageSourceResourceBundleLocator will , aber es ist verwendet, ich weiß nicht warum PlatformResourceBundleLocator
Irgendwelche Ideen?
Vielen Dank für die Antwort. Früher habe ich eine einfachere Version mit setValidationMessageSource verwendet, wie Sie geschrieben haben. Das Verhalten war das gleiche wie ich es zuerst beschrieben habe. Die Sache ist, dass ich in meinem ein Attribut validator = "validator" verpasst habe. Ich habe das Attribut hinzugefügt und es funktioniert. –
was tun, wenn ich nur spring-web modul, nicht spring-webmvc verwende? –
Wo Validator ref in Annotation-basierte Konfiguration verwenden – karthi