springMVC国际化

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

猜你喜欢

转载自814318774.iteye.com/blog/2246802