在JSR303 bean验证中使用spring-mvc build并且除了一个问题之外它的工作正常,不会从属性文件中选择消息。
我的Web应用程序正在使用maven创建,这是当前结构
Main
-java
-resources
-bundles
-message.properties
-webapp
<beans:bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<beans:property name="basenames">
<beans:list>
<beans:value>bundles/messages</beans:value>
<beans:value>bundles/shipping</beans:value>
<beans:value>bundles/payment</beans:value>
</beans:list>
</beans:property>
</beans:bean>
- 验证
<beans:bean id="validator"
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<beans:property name="validationMessageSource" ref="messageSource"/>
</beans:bean>
<annotation-driven>
<message-converters>
<beans:bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter">
<beans:property name="supportedMediaTypes">
<beans:list>
<beans:value>image/jpeg</beans:value>
<beans:value>image/gif</beans:value>
<beans:value>image/png</beans:value>
</beans:list>
</beans:property>
</beans:bean>
</message-converters>
</annotation-driven>
@NotEmpty(message="{registration.firstName.invalid}")
public String getFirstName() {
return firstName;
}
有些如何在我的JSP页面上,我收到这些消息This field is required
,不确定是什么问题
我的Data类具有以下结构
PersistableCustomer extends SecuredCustomer
SecuredCustomer extends CustomerEntity
即使将消息源传递给验证器,它也不会从自定义属性文件中获取消息。
答案 0 :(得分:3)
我在这里疯狂猜测......通常JSR-303消息插值器正在从ValidationMessages.properties
接收消息。如果您希望验证器使用Spring的消息源,则需要以这种方式进行配置:
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="validationMessageSource" ref="messageSource" />
</bean>
<mvc:annotation-driven validator="validator" />