Struts2 国际化

国际化 , 也称为I18n,Internationalization的简写。

操作:

1.在struts.xml里加入配置

<span style="font-family: Arial, Helvetica, sans-serif;"><?xml version="1.0" encoding="UTF-8" ?></span>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<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

语言区域查询方式:

Struts2 国际化_第1张图片



报错处理

[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级优先级最大

你可能感兴趣的:(java,tomcat,struts2,语言,国际化)