springmvc国际化+freemarker整合 一步步走来

来源:互联网 发布:淘宝卖家中心进不去 编辑:程序博客网 时间:2024/06/05 04:20

这里记录一下 ‘打杂’工作的spring国际化  记录一下  同时也是帮助各位朋友!

一,加入两个配置文件,分别是中英文


二,在spring-mvc.xml文件里加入这些配置

    <!-- 国际化操作 拦截器 必需配置,可以和其它国际化方式通用 -->  
    <mvc:interceptors>
        <bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
    </mvc:interceptors>
    <!-- 配置国际化资源文件路径 -->
    <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
        <property name="basename">
            <!-- 定义消息资源文件的相对路径 -->
            <value>messages/message</value>
        </property>
        <property name="cacheSeconds" value="1800"></property>
    </bean>
    <!-- 基于Cookie的本地化解析器 -->
    <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
       <!-- 设置最大有效时间,如果是-1,则不存储,浏览器关闭后即失效,默认为Integer.MAX_INT-->
       <property name="cookieMaxAge" value="1800"/>
       <property name="defaultLocale" value="zh_CN"/>
       <!-- 设置cookieName名称,可以根据名称通过js来修改设置,也可以像上面演示的那样修改设置,默认的名称为 类名+LOCALE(
               即:org.springframework.web.servlet.i18n.CookieLocaleResolver.LOCALE-->
       <property name="cookieName" value="Language"></property>
    </bean>
    <!-- 基于Session的本地化解析器 -->
    <!--<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />-->


三,在页面上引入  <#import "/base/spring.ftl" as spring/>   提一下 这是spring-webmvc.jar自带的spring.ftl,粘过来用即可,路径为org\springframework\web\servlet\view\freemarker


四,页面上加两个中英文切换的按钮

<a href="${ctx}/language.do?language=zh_CN"  class="btn btn-blue"><@spring.message code="Chinese"/></a>
<a href="${ctx}/language.do?language=en" class="btn btn-blue"><@spring.message code="English"/></a>


五,在controller中写入一个方法

@RequestMapping("language")
    public ModelAndView language(HttpServletRequest request,HttpServletResponse response){
        String language = request.getParameter("language").toLowerCase();
        
        if(language==null||language.equals("")){
            return new ModelAndView("redirect:/");
        }else{
            String[] split = language.split("_");
            if(split.length>1){
                resolver.setLocale(request, response, new Locale(split[0],split[1]));
            }else{
                resolver.setLocale(request, response, new Locale(split[0]));
            }
        }
        return new ModelAndView("redirect:/");
    }

六,传入key值,这里值得提一下的是,用ApplicationContext接口的getMessage方法,便可返回value,不用去傻傻的去遍历配置文件




到这里,国际化就配置完成了,JSP的整合 与这个大同小异,希望能帮到大家!
原创粉丝点击