2015-12-21 3 views
0

Мой проект использует весенний mvc и валидатор гибернации. И я пытаюсь сделать его поддержкой многоязычного. Это мой весна-I18N файлHibernate validator не смог получить значение по ключу

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd 
http://www.springframework.org/schema/mvc 
http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd"> 

    <mvc:interceptors> 
     <bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"> 
      <property name="paramName" value="lang"/> 
     </bean> 
    </mvc:interceptors> 


    <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver"> 
     <property name="cookieMaxAge" value="604800"/> 
     <property name="defaultLocale" value="zh_CN" /> 
     <property name="cookieName" value="language"></property> 
    </bean> 

    <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> 
     <property name="basenames"> 
      <list> 
       <value>classpath:i18N/messages</value> 
       <value>classpath:i18N/validation</value> 
      </list> 
     </property> 
      <property name="defaultEncoding" value="UTF-8" /> 
     <property name="useCodeAsDefaultMessage" value="false"/> 
    </bean> 

    <mvc:annotation-driven validator="validator" /> 

    <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> 
     <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/> 
     <property name="validationMessageSource" ref="messageSource"/> 
    </bean> 
</beans> 

И моя проблема, в то время как я использую аннотации в файле боб, как это,

@Size(min=6, max=25,message="{password_length_require}") 
private String password; 

и в validation_en_US.properties, я делаю это

password_length_require=The password length require more than 5 and less 25 

В результате страница будет выводить «{password_length_require}». С другой стороны, в мой контроллер, я использую

bindingResult.rejectValue("password", "password_length_require"); 

Это будет работать нормально ...

Может кто-нибудь мне помочь?

ответ

0

У меня была такая же проблема раньше, мне потребовалось много времени, чтобы решить ее. Как и у меня, может быть что-то не так со следующей конфигурацией.

<property name="basenames"> 
     <list> 
      <value>classpath:i18N/messages</value> 
      <value>classpath:i18N/validation</value> 
     </list> 
    </property> 

Значение имущества «basenames» должен быть полный путь, где ваши сообщения проверки файлов сохранить в project.For Например, если файлы сообщений проверки находятся в пакете с именем «org.example.config.i18N.messages» , вы должны настроить xml следующим образом:

<value>classpath:org/example/config/i18N/messages</value> 

Возможно, вам нужно проверить, правильна ли ваша конфигурация. Выше мой опыт, надеюсь помочь вам.

Смежные вопросы