国际化 , 也称为I18n,Internationalization的简写。
操作:
1.在struts.xml里加入配置
<span style="font-family: Arial, Helvetica, sans-serif;"> </span>
<struts>
<constant name="struts.custom.i18n.resources" value="itheima"></constant>
<constant name="struts.devMode" value="true" />
<package name="a" extends="struts-default" namespace="/manage">
<action name="LoginAction" class="com.cn.test.hb.LoginAction">
<result name="success">/result.jsp</result>
<result name="error">/error.jsp</result>
</action>
</package>
</struts>
2.在src里新增资源文件:
命名规则是基名_语言代号_区域代号.properties
- Resources_en_US.properties
- Resources_zh_CN.properties
分别添加设置system_name变量,值为 "English System" 、 "Chinese System":
system.name=Englist System
system.name=\u4E2D\u6587\u7CFB\u7EDF
语言区域查询方式:
报错处理
[http-8080-2] WARN org.apache.struts2.util.TextProviderHelper - The default value expression 'system.name' was evaluated and did not match a property. The literal value 'system.name' will be used.
这是因为system.name在资源文件里没有定义。
3.注意修资源文件后,要重新部署或重启Tomcat才能生效。
4.Action获取资源值
getText("")
5.jsp获取资源值
<%@ page language="java" pageEncoding="UTF-8"%>
<!-- 加载struts2标签库 -->
<%@ taglib uri="/struts-tags" prefix="s"%>
<html>
<body>
s:text name=system.name
<s:i18n name="Resources">
<span style="white-space:pre"> </span><s:text name="system.name"></s:text>
</s:i18n>
<br>
<s:textfield name="username" key="login.username"></s:textfield>
</body>
</html>
标签里的键可以参数化,如:
<s:text name="label.hello">
<s:param>mytest</s:param>
</s:text>
6.国际化资源文件分为三种级别
- (1) 全局资源文件,可以被整个应该程序引用,也就是struts.custom.i18n.resources=messageResource指定的文件
- (2) 包级资源文件,每个包的根目录下可以新建资源文件,仅被当前包中的类访问.文件名格式为:package_语言代码_国家代码.
- (3) Action级资源文件,仅被当前Action引用,名称为action名_语言代码_国家代码
查找顺序为从小范围到大范围, Action级优先级最大