Struts 2.x权威指南
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.7.3 输出国际化信息

为了让程序可以显示国际化信息,需要在JSP页面中输出key,而不是直接输出字符串常量。

Struts 2提供了如下三种方式来输出国际化信息。

<s:text name="messageKey"/>:使用s:text标签来输出国际化信息。

<s:property value='%{getText("messageKey")}'/>:使用表达式方式输出国际化信息。

对于表单标签,使用key属性代替label属性来指定国际化信息的key。

因此,我们再次修改表现层的 JSP 页面,使用国际化标签输出国际化信息。修改后的loginForm.jsp页面代码如下。

程序清单:codes\02\2.7\struts2qsi18n\WEB-INF\content\loginForm.jsp

<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
    <meta name="author" content="Yeeku.H.Lee(CrazyIt.org)" />
    <meta http-equiv="Content-Type" content="text/html; charset=GBK" />
    <title><s:property value="getText('loginPage')"/></title>
</head>
<body>
<!-- 使用form标签生成表单-->
<s:form action="login">
    <!-- 生成一个用户名文本输入框 -->
    <s:textfield name="username" key="user"/>
    <!-- 生成一个密码文本输入框 -->
    <s:textfield name="password" key="pass"/>
    <!-- 生成一个提交按钮 -->
    <s:submit key="login"/>
</s:form>
</body>
</html>

上面的JSP页面不再包含任何直接字符串,而是全部通过<s:text name="..."/>来输出国际化提示。对于表单控件,不再指定label属性,而是指定key属性,key属性值为国际化资源文件里对应的key。

再次在浏览器中浏览该页面,将看到与图2.7相同的界面。

重新设置浏览者所在的语言/区域选项,设置语言/区域选项请先进入“控制面板”,在控制面板中单击“区域和语言选项”,进入如图2.9所示的对话框。

图2.9 设置语言/区域选项

如果选择“英语(美国)”选项,然后单击“确定”按钮,将设置本地的语言环境为美国英语。再次向服务器请求loginForm.jsp页面,将看到如图2.10所示的页面。

图2.10 程序国际化的效果

如果我们使用Firefox浏览器来浏览该页面,则会发现该页面依然显示中文界面——这是因为Firefox的语言环境并不受Windows系统的控制。为了让Firefox也使用美国英语环境,单击Firefox浏览器菜单栏中的“工具→选项”菜单,将出现“选项”对话框,单击该对话框的“内容”Tab页,将看到如图2.11所示的界面。

图2.11 设置Firefox的语言环境

在图2.11所示的对话框中单击“选择”按钮,将出现“语言和字符编码”对话框,在该对话框下面的下拉列表框中选择“英语/美国 [en-us]”选项,如图2.12所示,然后单击下拉框右边的“添加”按钮,将添加“英语/美国”语言环境。在该对话框上面的列表框中选择“英语/美国 [en-us]”,然后单击“上移”按钮,将该选项移至最上面,让整个页面优先使用英语/美国语言环境。

图2.12 设置Firefox的语言环境为英语/美国

再次使用Firefox浏览器浏览loginForm.jsp页面,将看到该页面变成了英文界面。