2016-02-25 148 views
0

我正在使用Spring mvc應用程序,並且我已經爲使用國際化的頁面實現了西班牙語翻譯。我在我的xml中使用了以下代碼:Spring MVC驗證消息翻譯

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

<bean id="messageSource" 
     class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> 
     <property name="basename" value="classpath:messages" /> 
     <property name="defaultEncoding" value="UTF-8"/> 
    </bean> 

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

    <bean id="localeResolver" 
     class="org.springframework.web.servlet.i18n.CookieLocaleResolver"> 
     <property name="defaultLocale" value="en"/> 
    </bean> 

    <bean id="handlerMapping" 
     class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> 
     <property name="interceptors"> 
      <ref bean="localeChangeInterceptor" /> 
     </property> 
    </bean> 

除驗證消息外,所有標籤和消息均有效。我在驗證器類

errors.rejectValue("value1","valid.value1"); 

,並在屬性文件中我有2個文件西班牙語,英語文本設置驗證消息。但是

<form:errors path="value1" /> 

無法正常工作。它正在顯示文本(我有一些像tilda一樣的字母,所以我試着用&ntilde;),它不起作用。

我的jsp頁面的頂部有

<jsp:directive.page contentType="text/html;charset=UTF-8" /> 

     <head> 
      <%@ page isELIgnored="false"%> 

       <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
       <meta http-equiv="X-UA-Compatible" content="IE=edge" /> 

    ................ 

    </head> 

<body> 

<form:errors path="value1" /> 

</body> 

我需要添加其他內容下面?謝謝。

+0

任何建議地方? – user115391

回答

0

我能夠完成這項工作。我所要做的只是給html添加htmlEscape =「false」。我確實嘗試過,但我添加到了spring:message標籤中,所以它不起作用。謝謝。

0

我偶然發現了同樣的問題,並意識到rejectValue方法並不實際轉換消息,而如果我使用ValidationUtils,一切正常。

所以如果你需要自定義的驗證,而不ValidationUtils相關那時,我找到的唯一解決方法是內部