在前一篇文章 SSH2项目 LoginDemo 添加 AJAX ,我们为 LOGINDEMO 添加了 AJAX 方面的支持,今天我们为它添加国际化方面的支持!
Struts2 对于国际化的支持非常容易配置
添加国际化属性配置文件到 SRC 目录
struts.properties
struts.custom.i18n.resources=globalMessages
globalMessages_en_US.properties
index.title=Login Demo
form.ajax.title=Login Demo By AJAX
text.label.username=User Name:
text.label.userpass=User Pass:
button.label.loginbyajax=Login By AJAX
button.label.loginbypost=Login By POST
form.post.title=Login Demo By POST
message.success="Welcome! User:"+{0}+" Login Successful!"
message.fail="Sorry! Login Fail! Please try argin."
globalMessages_zh_CN.properties
index.title=登录演示
form.ajax.title=AJAX方式登录演示
text.label.username=用户名称:
text.label.userpass=用户密码:
button.label.loginbyajax=AJAX方式登录
button.label.loginbypost=POST方式登录
form.post.title=POST方式登录演示
message.success="欢迎!用户:"+{0}+" 登录成功!"
message.fail="对不起!登录失败!请再试一次!"
上面两个属性配置文件中,国际化信息以 键值对 方式对应。需要输出的地方我们引用相应的键即可
标签方式引用键
<s:text name="index.title" />
带参数标签方式引用键
<s:text name='message.success'><s:param>item</s:param></s:text>
getText方式引用键
<s:textfield name="user.userName" label="%{getText('text.label.username')}" />
修改页面 index.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<!-- 添加 jquery tag 库 -->
<%@taglib prefix="sj" uri="/struts-jquery-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<!-- 添加 JQUERY 库的 JS 库文件包含 -->
<sj:head locale="zh_CN" jqueryui="true" />
<!-- AJAX 方式登录 callback 函数响应,可以写至专门的 JS 文件 -->
<script type="text/javascript">
//当登录成功时的 callback
$.subscribe("success", function(event) {
/**
* event.orginalEvent.data 中保存了 Action 返回的 JSON 值
* 本例中是 {"user":{"id":1,"userName":"test","userPass":"test"}}
* $.each 语句 遍历 json 值中 user 对象
* 当 idx=="userName" 时 输出 用户 登录成功信息至 目标元素
*/
$.each(event.originalEvent.data.user , function(idx,item) {
if (idx=="userName") {
// s 标签方式引用键,带参数型
$("#result").html(<s:text name='message.success'><s:param>item</s:param></s:text>);
}
});
});
//当登录失败时的 callback ,输出登录失败信息至 目标元素
$.subscribe("error", function() {
$("#result").html(<s:text name='message.fail' />);
});
</script>
<!-- s 标签方式引用 键-->
<title><s:text name="index.title" /></title>
</head>
<body style="text-align:center;">
<!--普通登录方式 同原来的例子没有区别,只是加入了点CSS-->
<s:div cssStyle="border:#000000 solid 1px;width:400px;margin:0 auto;">
<span style="display:block;text-align:center;"><s:text name="form.post.title" /></span>
<s:form action="loginAction" method="post" namespace="/login-demo" cssStyle="margin:0 auto;text-align:center;">
<!-- getText 方式引用键 -->
<s:textfield name="user.userName" label="%{getText('text.label.username')}" />
<s:password name="user.userPass" label="%{getText('text.label.userpass')}" />
<s:submit value="%{getText('button.label.loginbypost')}" />
</s:form>
</s:div>
<br />
<!-- AJAX 方式登录 -->
<s:div cssStyle="border:#000000 solid 1px;width:400px;margin:0 auto;">
<span style="display:block;text-align:center;"><s:text name="form.ajax.title" /></span>
<s:form action="loginAjax" method="post" namespace="/login-ajax" cssStyle="margin:0 auto;text-align:center;">
<s:textfield name="user.userName" label="%{getText('text.label.username')}" />
<s:password name="user.userPass" label="%{getText('text.label.userpass')}" />
<!--
使用了 jquery 标签库的 submit 标签
targets - 登录后信息回显目标
onSuccessTopics - 登录成功 调用的 callback 句柄
onErrorTopics - 登录失败 调用的 callback 句柄
dataType - 定义 ACTION 返回值类型为 json
-->
<sj:submit value="%{getText('button.label.loginbyajax')}" targets="result" onSuccessTopics="success" onErrorTopics="error" dataType="json" />
</s:form>
<!-- AJAX方式登录,信息回显目标元素 -->
<span id="result" style="background-color:yellow;"></span>
</s:div>
</body>
</html>
浏览器默认中文显示
浏览器默认英文显示
Categories: 网页编程