欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

springMVC国际化

程序员文章站 2022-04-16 11:03:30
...

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">