我们有一个使用旧的 Spring MVC 框架运行的网站,并已升级到 5.3.9。该网站允许用户单击页面上的英语或西班牙语。升级后一直是英文,不显示西班牙文。
<beans:bean id="publicUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<beans:property name="interceptors">
<beans:list>
<beans:ref bean="localeChangeInterceptor" />
</beans:list>
</beans:property>
<beans:property name="urlMap">
<beans:map>
<beans:entry key="/public/login">
<beans:ref bean="wsLoginController"/>
</beans:entry>
</beans:map>
</beans:property>
</beans:bean>
<beans:bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
<beans:property name="defaultLocale" value="en" />
</beans:bean>
<beans:bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<beans:property name="paramName" value="locale" />
</beans:bean>
<beans:bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<beans:property name="defaultEncoding" value="UTF-8"/>
<beans:property name="basenames">
<beans:list>
<beans:value>registryMessages</beans:value>
</beans:list>
</beans:property>
</beans:bean>
以上配置不起作用,因此我在控制器中添加了以下代码。
网址:search.html?locale=es_MX
String language = request.getParameter("locale");
if(language == null) {
language= "en";
}
Locale lc = new Locale(language);
RequestContextUtils.getLocaleResolver(request).setLocale(request, response, lc);
当我运行 localhost(WebSphere 应用程序服务器) 时,这是有效的。然而,当部署到 DEV WebSphere 服务器时,问题仍然存在。尝试过卸载、删除缓存、重新部署等,但仍然没有成功。感谢修复上述代码的任何帮助。是否有办法在不添加控制器代码的情况下进行上述配置?或者在控制器中添加小代码后,它可以在我的本地主机上运行,但为什么它不能在 DEV 服务器上运行?谢谢!
URL 参数为 locale=es_MX。我的属性文件为registryMessages_es_MX.properties。当将参数值设置为
Locale lc = new Locale(language);
时,它将其转换为小写。当在本地主机(Windows)上运行时,它能够找到具有大写扩展名的属性,但当部署到 DEV(Unix 服务器)时,它正在寻找“_es_mx.proeprties”并且无法加载。我已将所有属性更改为小写扩展名“es_mx”,适用于 Windows 和 Unix 平台。