SpringMVC国际化

基于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\u53F7
password = \u5BC6\u7801
submit = \u63D0\u4EA4
welcome  = \u6B22\u8FCE\u6765\u5230\u82F1\u96C4\u8054\u76DF
userName =\u5F20\u4E1C\u5761
title = \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";
        }





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值