转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html
其实在我们成功访问到login.jsp页面后,只要在地址栏中增加参数request_locale=en_US便可以正确切换到登录页面为英文。当然我们可以再链接根据此参数写这个资源文件的链接。当然我们也可借助一个新Action来实现,操作步骤如下:在login.jsp中增加如下代码:
<a href="change.action?request_locale=zh_CN">
<s:text name="chinese"></s:text>
</a>
<a href="change.action?request_locale=en_US">
<s:text name="english"></s:text>
</a>
change.action对应的配置为:
<action name="change"
class="com.asm.ChangeLangAction">
<result>/login.jsp</result>
</action>
ChangeLangAction的主要代码如下:
package com.asm;
public class ChangeLangAction extends ActionSupport {
public String execute() throws Exception {
return SUCCESS;
}
}
以上是第一种方法,特别要注意,由于使用了不同Action,所以要资源文件这时只有pack级别和app级别的才起作用,所以这时还应把action级别的资源文件内容增加到app级别的资源文件中去。下面使用第二种方法,原理基本和上面一样,只需在此ChangeLangAction中增加一个新的字段String lang及相应的get/set方法,再增加一个新的方法changeLang,代码如下:
public String changeLang() throws Exception
{
Locale locale = null;
System.out.println(lang);
if (lang.equals("zh")) {
// 显示中文
locale = Locale.CHINA;
System.out.println("======" + lang+locale);
} else {
// 显示英文
locale = Locale.US;
}
ActionContext.getContext().setLocale(locale); ServletActionContext.getRequest().getSession().setAttribute("WW_TRANS_I18N_LOCALE", locale);
return SUCCESS;
}
配置内容为:
<action name="cl"
class="com.asm.ChangeLangAction"
method="changeLang">
<result>/login.jsp</result>
</action>
在login.jsp中对应的链接为:
<a href="cl.action?lang=zh">
<s:text name="chinese"></s:text>
</a>
<a href="cl.action?lang=en">
<s:text name="english"></s:text>
</a>
这样操作后,当我们成功访问到login.jsp后,便可以点击链接来随意切换访问英文或中文页面。