SpringMVC 4.2 国际化 JSP页面标签无法切换

diypyh 2016-06-13 09:50:52
使用SpringMVC4.2.4版本,在JSP页面中使用<spring:message>标签只能显示默认语言,无法动态切换,而在JAVA后台则可以动态切换。

Spring配置:

<!-- 配置国际化资源文件路径 -->
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<array>
<value>i18n/sys/ApplicationResources</value>
<value>i18n/sys/user/ApplicationResources</value>
</array>
</property>
<!-- 如果在国际化资源文件中找不到对应代码的信息,就用这个代码作为名称 -->
<property name="useCodeAsDefaultMessage" value="true" />
<!-- 刷新资源文件的周期,以秒为单位 -->
<property name="cacheSeconds" value="5" />
</bean>
<!-- 基于Cookie的本地化解析器 -->
<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>


JSP页面标签:

<%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%>
<spring:message code="sys.sysUser" />


JAVA后台测试:

@RequestMapping("/test")
@ResponseBody
public String test(HttpServletRequest request, HttpServletResponse response) throws Exception {
Locale locale = LocaleContextHolder.getLocale();
System.out.println(locale);
String str1 = messageSource.getMessage("sys.sysUser", null, locale);
System.out.println(str1);
return str1;
}


JAVA后台动态设置语言方法:

@Autowired
private LocaleContextResolver localeResolver;

/**
* 语言切换
*/
@RequestMapping("language")
public ModelAndView language(HttpServletRequest request, HttpServletResponse response, String language) {
language = language.toLowerCase();
System.out.println("language:" + language);
if (language == null || language.equals("")) {
return new ModelAndView("redirect:/");
} else {
if (language.equals("zh_cn")) {
localeResolver.setLocale(request, response, Locale.CHINA);
} else if (language.equals("en")) {
localeResolver.setLocale(request, response, Locale.ENGLISH);
} else {
localeResolver.setLocale(request, response, Locale.CHINA);
}
}

return new ModelAndView("redirect:/");
}


中文语言测试效果:


英文语言测试效果:


为什么在JSP页面的标签中的动态语言会失效呢?
...全文
328 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
494306724 2017-09-30
  • 打赏
  • 举报
回复
大佬, 和你一模一样的问题,折腾一星期没进展,自己写一个标签是什么意思啊,如果可以的话,加一下qq 494306724, 或者直接在这里回复也行
diypyh 2017-03-20
  • 打赏
  • 举报
回复
引用 2 楼 wanjing13 的回复:
楼主你这个问题解决了吗
自己写了一个标签来解决
wanjing13 2016-09-27
  • 打赏
  • 举报
回复
楼主你这个问题解决了吗
diypyh 2016-06-13
  • 打赏
  • 举报
回复
刚试过在切换语言时,不进行重定向跳转,则在index.jsp中能正确获取到语言信息,但是在别的页面还是一样无法。有没有方法在一个页面切换语言后,所有的页面都能正确获取语言信息呢? 切换语言非重定向跳转代码:

	/**
	 * 语言切换,非重定向跳转
	 */
	@RequestMapping("language")
	public ModelAndView language(HttpServletRequest request, HttpServletResponse response, String language) {
		language = language.toLowerCase();
		System.out.println("language:" + language);
		if (language == null || language.equals("")) {
			return new ModelAndView("/index");
		} else {
			if (language.equals("zh_cn")) {
				localeResolver.setLocale(request, response, Locale.CHINA);
			} else if (language.equals("en")) {
				localeResolver.setLocale(request, response, Locale.ENGLISH);
			} else {
				localeResolver.setLocale(request, response, Locale.CHINA);
			}
		}
		return new ModelAndView("/index");
	}

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧