Struts2的国际化

(1)建立中文版资源文件——globalMessages_GBK.properties,其代码如下:

title.login = 登录页面
label.username = 姓名
label.password = 密码
item.submit = 登录
item.reset = 重置
message.success = 你已成功登录。现进入了主页。
message.failure = 你登录失败。现进入注册页面,请注册你的信息。

实际上你的代码打出来后是这样子的:

title.login = \u767B\u5F55\u9875\u9762
label.username = \u59D3\u540D
label.password = \u5BC6\u7801
item.submit = \u767B\u5F55
item.reset = \u91CD\u7F6E
message.success = \u4F60\u5DF2\u6210\u529F\u767B\u5F55\u3002\u73B0\u5728\u8FDB\u5165\u4E86\u4E3B\u9875\u3002
message.failure = \u4F60\u5DF2\u767B\u5F55\u5931\u8D25\u3002\u73B0\u5728\u8FDB\u5165\u6CE8\u518C\u9875\u9762\uFF0C\u8BF7\u6CE8\u518C\u4F60\u7684\u4FE1\u606F\u3002

(2)建立英文版资源文件——globalMessages_en_US.properties,其代码如下:

title.login = Login Page
label.username = Input your username
label.password = Input your password
item.submit = Submit
item.reset = Reset
message.success = you're successful to login in.Now you've entered the main page.
message.failure = you fail to login in.You need register your infomation.

重点来了,在国际化中,所有的编码都要使用标准的编码方式,需要把中文符转化为Unicode代码,否则在国际化处理时页面会出现乱码。中文资源文件是不能直接使用的,必须转化为编制的编码方式。一般使用JDK自带的native2ascii工具进行中文资源文件编码方式转换。

(3)将中文资源文件中的中文字符转化为Unicode编码。

将中文资源文件globalMessages_GBK.properties中中文字符转化为Unicode代码,并生成符合资源文件的命名规则的新文件:globalMessages_zh_CN.properties,其实现方法是在资源文件所在的文件夹下(必须设置后JDK的访问路径)输入:

native2ascii -encoding UTF-8 globalMessages_GBK.properties globalMessages_zh_CN.properties

比如我的globalMessages_GBK.properties在F:\elipse\Struts2_day04\src,那么我就在Dos下先进入到F:\elipse\Struts2_day04\src,然后再敲上面的代码,然后就会生成一个globalMessages_zh_CN.propertiese文件。

这个文件就是我们需要的中文版资源文件。

(4) 在struts.xml配置文件中配置资源文件

<struts>
   <!-- value中的值就是常量值,即国际化资源文件的名字 -->
	<constant name="struts.custom.i18n.resources" value="globalMessages"></constant>
	<constant name="struts.i18n.encoding" value="UTF-8"></constant>
</struts>

Struts2的国际化应用案例

基于Struts2,设计一个适用于中英文的登录系统。

该系统的组件有:

(1)登录页面(国际化login.jsp)、成功登录页面(国际化loginsuccess.jsp)。

(2)两个资源文件:支持英文登录的细纹编码文件、支持中文登录的汉字编码文件。

(3)登录验证的控制器LoginAction类。该控制其的业务逻辑是:如果验证成功,则跳转到loginsuccess.jsp页面,否则重新返回到登录页面login.jsp。

 

国际化login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<!-- 使用text标签输出国际化消息  -->
<title><s:text name="title.login"/></title>
</head>
<body>
	<s:form action="checkLogin" method="post">
		<!-- 表单元素的key值与资源文件的key对应 -->
		<s:textfield name="name" key="label.username" size="20"></s:textfield>
		<s:password name="password" key="label.password" size="22"></s:password>
		<s:submit key="item.submit"></s:submit>
	</s:form>
</body>
</html>

国际化loginsuccess.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<!-- 使用text标签输出国际化信息  -->
<title><s:text name="message.success"/></title>
</head>
<body>	
	<hr>
	<s:text name="label.username" />:<s:property value="name"/><br>
	<s:text name="label.password" />:<s:property value="password"/><br>
</body>
</html>

LoginAction.java

package Action;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {
	private String name;
	private String password;
	private String tip;  //用于定义标题信息
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getTip() {
		return tip;
	}

	public void setTip(String tip) {
		this.tip = tip;
	}

	@Override
	public String execute() throws Exception {
		if(getName().equals("QQ") && getPassword().equals("123")) {
			ActionContext.getContext().getSession().put("name", getName());
			return "success";
		}
		else
			return "error";
	}
}

struts.xml

<struts>
	<constant name="struts.custom.i18n.resources" value="globalMessages"></constant>
	<constant name="struts.i18n.encoding" value="UTF-8"></constant>
	<package name="default" namespace="/" extends="struts-default">
		<!-- 国际化 -->
		<action name="checkLogin" class="Action.LoginAction"> 
			<result name="success">/国际化loginSuccess.jsp</result>
			<result name="error">/国际化login.jsp</result>
		</action>
	</package>
</struts>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值