Spring MVC 国际化备忘录

用Spring mvc 做国际化,其实重点的几项就是配置文件而已。xml配置与多语言的properties的配置. 但要想动态切换语言,所有页面必须经过 spring controller 处理,如果只接在jsp 页面,是不生效的。简单的配置文件如下:

一,这是需要在spring-mvc 里面配置的东西:
程序代码 程序代码

<bean id="messageSource"
        class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basename" value="classpath:welcome" />
        <property name="defaultEncoding" value="UTF-8"/>
    </bean>

    <bean id="localeChangeInterceptor"
        class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
        <property name="paramName" value="language" />
    </bean>

    <bean id="localeResolver"
        class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
        <property name="defaultLocale" value="zh_CN"/>
    </bean>

    <bean id="handlerMapping"
        class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
        <property name="interceptors">
            <ref bean="localeChangeInterceptor" />
        </property>
    </bean>
    
    <mvc:interceptors>
        <bean
            class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
        <property name="paramName" value="language" />
    </bean>
    </mvc:interceptors>


另外在src 下面建立 welcome_en.properties,welcome_zh_CN.properties 文件,里面分别输入各自的内容。

二,建立controller 层。这只是一个简单的测试,不适合在项目中使用,适合测试用.
程序代码 程序代码

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping("/i18n")
public class WelcomeController {

    @RequestMapping("/test")
    protected ModelAndView welcome(HttpServletRequest request,HttpServletResponse response) throws Exception {

        ModelAndView model = new ModelAndView("WelcomePage");
        
        return model;
    }
    
}


三,页面代码:
程序代码 程序代码

<%@ page contentType="text/html;charset=UTF-8" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<html>
<body>
<h1>Spring MVC internationalization example</h1>

Language : <a href="?language=en">English</a>|
<a href="?language=zh_CN">Chinese</a>

<h3>
    welcome.springmvc : <spring:message code="welcome.springmvc" text="default text" />
</h3>
Current Locale : ${pageContext.response.locale}
</body>
</html>


代码下载,略去了jar包,为了大家看配置更容易,可以下载测试工程。下载文件 下载spring mvc 国际化源码

下载文件 fileupload

大家可以看到,如果直接是在jsp 页面里去动态切换的话,结果是不生效的,比如地址为:
http://localhost:8089/spring_i18n/index.jsp?language=en

而采用spring mvc controller 处理过的是生效的,比如:
http://localhost:8089/spring_i18n/i18n/test?language=en
这种方式才可以动态切换语言。


除非申明,文章均为一号门原创,转载请注明本文地址,谢谢!
[本日志由 轻舞肥羊 于 2013-07-22 08:44 AM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.