struts2中国际化!!

struts2中的国际化分为三个级别:

(1)action类级别、package包级别、webapp级别

注意:

1,在搜索国际化资源文件时,依次从action、package、webapp搜索,优先级依次降低

2,在访问带有国际化的网页时,必须先请求action类来加载国际化文件,然后由此action类定位到要访问的页面;

具体做法:

在action类中声明一个方法 public String doDefault(){rreturn SUCCESS} (action类中带do的方法,在访问的时候无需加do)

假设:项目名称i18n action类名 login 那么:

访问时候:www.localhost:8888/i18n/login!default.action

一:action类级别(资源文件绑定action类)

取名方法:ActionName_zh_CN.properties

 

二:包级别

取名:package_zh_CN.properties (一定要以package开头)

三:webapp级别

位置:放在src下面

取名:基名_zh_CN.properties

基名随便起,但是需要在struts.xml中配置一个常量,方法如下:

<constant name="struts.custom.i18n.resources"   value="基名">

(2)带有占位符的文件访问

在页面上,通过<s:param/>给占位符赋值

例如:

login_succ=\u6B22\u8FCE{0}\u767B\u9646\uFF01{1}  欢迎{0}登陆,{1}

login1=\u597D\u597D\u5B66\u4E60\uFF0C\u5929\u5929\u5411\u4E0A 好好学习,天天向上

页面上:

<s:text name="login_succ">

<s:param value="user.username"></s:param>

或者(注意:value的值必须从值栈或者使用ognl表达式去取)

<s:param >值</s:param>

<s:param value="%{getText('login1')}"></s:param>

</s:text>

(3)页面手动选择中文版或者英文版

在Struts2中,可以通过 ActionContext.getContext().setLocale(Locale arg) 设置用户的默认语言。

为了简化设置用户默认语言环境,Struts2提供了一个名为i18n的拦截器(Interceptor),并且将其注册在默认的拦截器中(defaultStack)。

i18n拦截器在执行Action方法前,自动查找请求中一个名为request_locale的参数。如果该参数存在,拦截器就将其作为参数,转换成Locale对象,并将其设为用户默认的Locale(代表国家/语言环境)。

除此之外,i18n拦截器还会将上面生成的Locale对象保存在用户Session的名为WW_TRANS_I18N_LOCALE的属性中。一旦用户Session中存在一个名为WW_TRANS_I18N_LOCALE的属性,则该属性指定的Locale将会作为浏览者的默认Locale
 
action中的代码实现:

public class ChangeAction extends ActionSupport{
  
 /**
  *
  */
 private static final long serialVersionUID = -6866328775007509864L;
 private String lang;
 
    public String getLang() {
  return lang;
 }

 public void setLang(String lang) {
  this.lang = lang;
 }
   Locale l=null;
 public String execute() throws Exception{
     if(lang.equals("1")){//中文
      l=Locale.CHINA;
      
     }else{
      l=Locale.US;
     }
     ActionContext.getContext().setLocale(l);
     HttpServletRequest request=ServletActionContext.getRequest();
     HttpSession session=request.getSession();
     session.setAttribute("WW_TRANS_I18N_LOCALE", l);
     return LOGIN;
    }
 
}

页面请求方式:
<a href="login/changelang.action?lang=1"><s:text name="chinese"/></a>
 <a href="login/changelang.action?lang=2"><s:text name="english"/></a>
 
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值