springMVC 4.0 国际化
一、spring的配置文件:
<!--通过前天传递的参数更改使用语言环境...?locale=zh_CN -->
<mvc:interceptors >
<bean class = "org.springframework.web.servlet.i18n.LocaleChangeInterceptor"/>
</mvc:interceptors >
<!--配置语言转换级别,有AcceptHeaderLocaleResolver:通过http header的accept-language域来判断;
SessionLocaleResolver:通过本次会话过程中进行语言设定,登录周期内统一使用该设定;
CookieLocaleResolver:cookie中保持了前一次语言设定参数,每次根据cookie来设定;
FixedLocaleResolver:一直使用固定的locale -->
<bean id = "localeResolver" class = "org.springframework.web.servlet.i18n.CookieLocaleResolver" ></bean>
<!-- 国际化 用ResourceBundleMessageSource时,bean id 一定要使用messageSource-->
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames" value="i18n.language"></property>
<property name="cacheSeconds" value="-1"/>
</bean>
二、JSP页面
<h1 align="center">${message}</h1>
<spring:message code="hello.prompt"></spring:message> ${language}<br/>
<a href="/demo/language/test/chinese?locale=zh_CN"> 中文简体</a>|
<a href="/demo/language/test/english?locale=en_US">English</a>|
<a href="/demo/language/test/chineseTranditional?locale=zh_TW"> 中文繁體</a>
<p style="font-size: medium;align-content: center">
<spring:message code="hello.title"></spring:message>
</p>
三、后台controller
@Controller
@RequestMapping("/language")
public class LanguageController {
@RequestMapping("/test/{lan}")
public String change(@PathVariable String lan,ModelMap modelMap){
modelMap.put("language",lan);
return "hello";
}
}
四、常见错误
javax.servlet.jsp.JspTagException: No message found under code 'hello.prompt' for locale 'zh_TW' 试着将<bean id="messageResource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">改为<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
本文介绍如何在Spring MVC 4.0中实现多语言支持。内容涵盖配置语言环境切换拦截器、设置语言解析器、定义消息源及在JSP页面与控制器中使用国际化资源。同时解决常见错误。
2111

被折叠的 条评论
为什么被折叠?



