关于struts2和ext国际化的总结

关于struts2和ext国际化的总结.


转:http://tmsoft.lsxy.com/index.php?load=read&id=581

这几天,一直为在ext下的国际化烦恼,ext本身提供了国际化的功能,国际化文件在ext/source/locale、目录下,但是你要使用它,就必须在<head>进行引入,例如
<script  type="text/javascript"  src="ext/source/locale/ext-lang-cn_ZH.js"></script>
但是这样做就意味着固定了语言的种类,现在要求在改变IE浏览器中的语言选项的时候也要改变网页语言,这就得重新编写网页文件,这肯定不合理,如何解决呢?
我尝试了各种方法:
1、在javascript中能否得到浏览器设置的语言?
       在网上找了很长时间,有如下语句
                     window.navigator.userLanguage
                     window.navigator.systemLanguage
                     navigator.browserLanguage
     三个得到是系统浏览器语言,根本就不是浏览器设语言改变后的语言。
      这个企图没有成功。
2、在设计过程中我用到一个字符编码过滤器EncodingFilter.java,主要是在web.xml中加入过滤,从而解决字符集编码问题,我想能否在web一运行就得到当前浏览器设置
的语言,然后将语言保存到session或request中,这样每个页面就可以从sesson或request中取得当前的浏览器语言,想法可以,能解决吗?
在struts  2 中得到request和session的方法如下:
         http://tmsoft.lsxy.com/index.php?load=read&id=582
        没成功啊。。。。!!!原因在于运行过滤器前,根本没有加载struts  2的配置文件,那么你采用上面得到session或request的方法根本不起作用,提示无指针异常。

3、在听了一堂课后,想到只能写一个action来实现

  1. public class Register extends ActionSupport implements ServletRequestAware{  
  2. /**
  3. */ 
  4. private static final long serialVersionUID = 1L;  
  5. private HttpServletRequest request;   
  6.    
  7. @Override 
  8. public String execute() throws Exception {  
  9. request.setAttribute("browserLang", request.getLocale().toString());   
  10. return SUCCESS;   
  11. }  
  12.    
  13. @Override 
  14. public void setServletRequest(HttpServletRequest request) {   
  15. this.request=request;  
  16.    
  17. }  
  18.    
  19.    
  20.    
  21.   
public class Register extends ActionSupport implements ServletRequestAware{  /**  *  */  private static final long serialVersionUID = 1L;  private HttpServletRequest request;    @Override  public String execute() throws Exception {  request.setAttribute("browserLang", request.getLocale().toString());  return SUCCESS;  }    @Override  public void setServletRequest(HttpServletRequest request) {  this.request=request;    }        

通过ServletRequestAware接口得到request,然后request.setAttribute("browserLang",  request.getLocale().toString());
将浏览器语言放入request
最后在页面用${browserLang  }得到

<script type="text/javascript" src="ext/source/locale/ext-lang-${browserLang }.js"></script>   <script type="text/javascript" src="ext/source/locale/ext-lang-${browserLang }.js"></script>
struts  2 有这点好处${browserLang }切入任何地方多能得到
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值