我使用Spring 3.1.1和Hibernate验证器4.3.0.Final并有更改默认MessageInterpolator,从ValidationMessages需要验证消息(类路径)的问题。
我想用ResourceBundleMessageInterpolator将采取从我的春天为messageSource消息
我做了这样的事情在我的应用程序的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>
当我在日志中开始我的web应用程序我看到:
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
因此,大家可以看到,它不是ResourceBundleMessageInterpolator这是我想要的。 这是LocaleContextMessageInterpolator
后来,当我尝试验证的东西我只是得到ValidationMessages.properties消息,而不是从春消息源:
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.
你可以从应用程序的context.xml我想用MessageSourceResourceBundleLocator看到,但它的使用,我不知道为什么PlatformResourceBundleLocator
有任何想法吗?