2016-02-25 100 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相关那时,我找到的唯一解决方法是内部