SpringMVC国际化

来源:互联网 发布:淘宝家具店网页模板 编辑:程序博客网 时间:2024/05/16 13:54

基于session国际化

1.jsp页面代码

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>

       <a href="index.do?langType=zh">中文</a> | <a href="index.do?langType=en">英文</a><br/>         <h3><spring:message code="title"/> </h3>      <form action="login.do" method="post">                <table>           <tr>             <td><spring:message code="loginname"/></td>            <td><input type="text" id="name" name="name"></td>                  </tr>              <tr>             <td><spring:message code="password"/></td>            <td><input type="text" id="password" name="password"></td>                  </tr>              <tr>               <td><input type="submit" id="submit" value="<spring:message code="submit"/>"></td>           </tr>        </table>            </form>
2.国际化资源文件


loginname =login name;password =login name;submit = submit;welcome  =login name welcome;userName = administrator;

loginname = \u5E10\u53F7password = \u5BC6\u7801submit = \u63D0\u4EA4welcome  = \u6B22\u8FCE\u6765\u5230\u82F1\u96C4\u8054\u76DFuserName =\u5F20\u4E1C\u5761title = \u5F20\u4E1C\u5761
3.配置springmvc-config.xml

  <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">    <!-- 国际化信息所在的文件名 -->                         <property name="basename" value="com/baidu/model/messages" />       <!-- 如果在国际化资源文件中找不到对应代码的信息,就用这个代码作为名称  -->                   <property name="useCodeAsDefaultMessage" value="true" />           </bean>  <mvc:interceptors>      <!-- 国际化操作拦截器 如果采用基于(请求/Session/Cookie)则必需配置 -->     <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />  </mvc:interceptors>  <bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />

关于路径


第一种将资源文件放在源码里面:

那么配置文件信息如下:

     <!-- 读取国际化资源文件 == 资源文件在包里面,路径写全包名-->
    <bean id="messageSource"
        class="org.springframework.context.support.ResourceBundleMessageSource">
        <property name="basenames">
            <list>
                <value>cn/ddx/i18n/messages</value>
            </list>
        </property>
    </bean>

第二种配置文件在WEB-INF下面自己创建的目录下面:


那么配置文件信息如下:

    <!-- 读取国际化资源文件 == 资源文件在WEB-INF下面 ,可以配置多个 -->
    <bean id="messageSource"
        class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basenames">
            <list>
                <value>/WEB-INF/lang/messages</value>
            </list>
        </property>
    </bean>

需要注意的是两者配置的class不同,红色字体部分!

配置文件路径中的“messages”为资源文件名称中_en_US.properties的前面部分,可以自定义。


4.java代码


      @RequestMapping("/index.do")      public String  userlist(Model model,User user,HttpServletRequest request,@RequestParam(value="langType", defaultValue="zh") String langType) {            if(langType.equals("zh")){              Locale locale = new Locale("zh", "CN");               request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME,locale);           }      else if(langType.equals("en")){              Locale locale = new Locale("en", "US");               request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME,locale);          }          else               request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME,LocaleContextHolder.getLocale());            RequestContext requestContext = new RequestContext(request);      model.addAttribute("loginname", requestContext.getMessage("loginname"));          model.addAttribute("submit", requestContext.getMessage("submit"));           model.addAttribute("command", user);        return "/NewFile";        }





0 0