博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
struts2.1.6教程七、国际化
阅读量:6303 次
发布时间:2019-06-22

本文共 4570 字,大约阅读时间需要 15 分钟。

尽管国际化不是重点内容,但是也有必要了解它的使用。在struts2中国际化有三种级别:分别是针对某个Action的action级别,针对package的package级别,针对webapp的webapp级别。下面我们建立struts2i18n项目来演示国际化在struts2中的使用。

 

1.action级别下的国际化

步骤一、首先是建立login.jsp及LoginAction,由于它们经常使用,在此省去它们的代码。

步骤二、建立资源文件,由于LoginAction在com.asm包中,所以我们应在com.asm包下我们建立两个资源文件:一个是中文LoginAction_zh_CN.properties、一个是英文LoginAction_en_US.properties。注意它们的名字相对固定,前面与Action的名字相同,后面是语言和国家代码。

英文资源文件内容如下:

login_page=login pagelogin_username=userNamelogin_password=passwordlogin_sex=sexlogin_male=malelogin_female=femalelogin_submit=loginlogin_reset=resetlogin_suc=Welcome {0}

中文资源文件,需要特别注意:我们应使用Myeclipse自带的MyEclipse properties Editer编辑器来打开此资源文件,并在properties视图下进行编辑,这样它会把中文进行编码(我们切换到source视图下可以看到经编码后的中文)。 这一步非常重要,否则会出现乱码。

步骤三,修改login.jsp中的内容:

<%@ page language="java" pageEncoding="utf-8"%><%@ taglib uri="/struts-tags" prefix="s"%>        

说明:对资源文件的引用,我们采取了两种方式

:有的是通过在label中使用%{getText('资源文件中的key')}这样的形式,

有的是通过key=资源文件中的key这种形式。需要注意在radio标签中list对资源文件的引用。另外需要注意:   

它们的区别:前面是纯文本,后者是一个块。我们可以通过查看login.jsp的源码来证明。

步骤四、当我们直接访问login.jsp时会报错,因为在login.jsp中用到了资源文件,而资源文件又依赖于LoginAction,所以我们只能通过此Action来跳到login.jsp。但是使用包范围、全局范围的资源文件时,可以直接访问login.jsp文件实现国际化。操作步骤如下:

首先在LoginAction中增加一个方法:

public String doGoLogin() {        return LOGIN;    }

随后再在struts.xml中配置如下内容:

success.jsp
login.jsp

接着再编写一个link.jsp页面,内容如下:

直接访问Action中的方法 格式:doX(大写)xxx ---- ActionName!x(小写)xxx.action  注意此方法和前面二.7中相关方法的区别。 我们通过此Action跳转到login.jsp这样便能成功访问到login.jsp页面。

步骤五、在success.jsp中使用资源文件,主要内容如下

说明:在前面的资源文件中,我们配置了login_suc=Welcome {0},其中{0}表示占位参数,这里我们使用<s:param>来给此参数赋值。

步骤六、测试:在ie的internet选项中改变语言实现国际化的访问。

 

2.配置package的资源文件

同样在建立com.asm包下建立两个资源文件(package级别的资源文件名必须以package开头):取名为:package_zh_CN.properties,它的内容为:pack=pack属性值 和package_en_US.properties,它的内容为:pack=packageAttributeValue

然后再在login.jsp页面中增加如下内容:

测试包资源文件

这样便完成了package级别的资源文件配置,最后发布测试。

 

 

3.app级别的资源文件

 

在src目录下建立两个资源文件,取名为myapp_en_US.properties,它的内容为:

app=appAttributeValue和myapp_zh_CN.properties,它的内容为:

然后还需要在strust.xml中增加如下配置:

 

注意:name是固定值,而value来自于这个资源文件的基名。

最后在login.jsp中增加如下内容:

测试app级别资源文件

这样便完成了app级别的资源文件配置,随后发布测试。

说明:action级的资源文件优先级别最高,app最低。Pack级别的资源文件可作用于同一个包,app级别的资源文件可作用于当前项目。

补充:在jsp页面中直接访问某个资源文件,struts2为我们提供了i18n标签,使用此标签我们可以在类路径下直接从某个资源文件中获取国际化数据,而无需任何配置:

--xxx为类路径下资源文件的基名

而如果要访问的资源文件在类路径的某个包下(如action或package级别的资源文件),可以这样访问:

--com.asm为包名

 

4.使用资源文件的原理

我们建立ReadResourceFileTest类,代码如下:

 

package com.asm;import java.util.Locale;import java.util.ResourceBundle;public class ReadResourceFileTest {    public static void main(String[] args) {        ResourceBundle rb=ResourceBundle.getBundle("com.asm.LoginAction", Locale.US);        System.out.println(rb.getString("login_suc"));    }}

补充:在Action类(必须继承自ActionSupport)中获取资源文件的值的方法,可以使用如下代码:

String value = this.getText("资源文件的键名");  //获取资源文件的对应的值。如果想给资源文件中的占位符赋值,可以使用getText的重载方法。ActionContext.getContext().put("XXX",value);//存放在request范围,供jsp获取此值

 

5.选择使用资源文件

 其实在我们成功访问到login.jsp页面后,只要在地址栏中增加参数request_locale=en_US便可以正确切换到登录页面为英文。当然我们可以再链接根据此参数写这个资源文件的链接。当然我们也可借助一个新Action来实现,操作步骤如下:在login.jsp中增加如下代码:

change.action对应的配置为:

/login.jsp

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;    }

配置内容为:

/login.jsp

在login.jsp中对应的链接为:

这样操作后,当我们成功访问到login.jsp后,便可以点击链接来随意切换访问英文或中文页面。

 

转载地址:http://eeyxa.baihongyu.com/

你可能感兴趣的文章
把自己Github上的代码添加Cocoapods支持
查看>>
C语言OJ项目参考(2493)四则运算
查看>>
零基础入门深度学习(二):神经网络和反向传播算法
查看>>
find和xargs
查看>>
数据结构例程—— 交换排序之快速排序
查看>>
WKWebView代理方法解析
查看>>
IOS定位服务的应用
查看>>
[SMS&WAP]实例讲解制作OTA短信来自动配置手机WAP书签[附源码]
查看>>
IOS中图片(UIImage)拉伸技巧
查看>>
【工具】系统性能查看工具 dstat
查看>>
基于zepto或jquery的手机端弹出框成功,失败,加载特效
查看>>
zabbix配置触发器的依赖关系
查看>>
Linux工具使用(2)——Xmanager
查看>>
SCVMM2012功能测试(9)—构造VIP模板和创建SQLServer及应用程序配置文件
查看>>
常用的linux命令-vim
查看>>
ROS网页断流解决方法
查看>>
mysql安装
查看>>
简单的服务器安全方案思路
查看>>
我的友情链接
查看>>
本文出自 “飛鴻沓膤” 博客,请务必保留此出处http://jxzhfei.blog.51cto.com/1382161/1539751...
查看>>