Spring-mvc验证错误未从属性文件中选取

时间:2014-02-02 08:38:28

标签: spring spring-mvc bean-validation

在JSR303 bean验证中使用spring-mvc build并且除了一个问题之外它的工作正常,不会从属性文件中选择消息。

我的Web应用程序正在使用maven创建,这是当前结构

Main
      -java
      -resources
         -bundles
            -message.properties
      -webapp

XML文件

<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>

Java文件

@NotEmpty(message="{registration.firstName.invalid}")
  public String getFirstName() {
   return firstName;
}

有些如何在我的JSP页面上,我收到这些消息This field is required,不确定是什么问题 我的Data类具有以下结构

PersistableCustomer extends SecuredCustomer
SecuredCustomer extends CustomerEntity

即使将消息源传递给验证器,它也不会从自定义属性文件中获取消息。

1 个答案:

答案 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" />