struts2 国际化资源文件测试

国际化资源文件包括:全局范围(在src目录下)、包范围、action范围
一.全局范围(在src目录下):
资源文件的命名格式如下:


baseName_language_country.properties
baseName_language.properties
baseName.properties
其中baseName为资源文件的基本名,我们可以自定义,但
language和country必须是java支持度的语言和国家。如:中国
大陆:baseName_zh_CN.properties
美国:baseName_en_US.properties
对于中文的属性文件,应该使用jdk提供的native2ascii命令把
文件转换为ascii编码的文件,命令使用方式如下:
native2ascii 源文件.properties 目标文件.properties
接下来在struts.xml文件中定义为全局资源文件,语句为
<constant name="struts.custom.i18n.resources"  value="chao"></constant>   chao为baseName
访问国际化信息:
1 在JSP页面中使用<S:text name=""/>标签输出国际化信息
2 在action类中可以继承ActionSupport,使用getText()方法得到国际化信息
3 在表单标签通过key属性制定资源文件的key,如<s:textfild 
name="realname" key="user"/>
输出带有占位符的国际化信息:
资源文件内容如下:
welcome={0},欢迎来到这里{1}
在jsp中输出国际化信息:
<s:text name="welcome">
<s:param>小明</s:param>
<s:param>学习</s:param>
</s:text>
在action类中可以继承ActionSupport,使用getText(key, 


args)方法得到国际化信息
二.包范围:放在包中,可以被包中和子包中类访问。首先在包中寻找国际化内容,寻找不到到默认资源文件寻找

三.action范围:只会对某一个action有效,baseName为ActionClassName,即类名。当类访问key时访问顺序向上转。


通过标签直接访问资源文件,无需配置;
<s:i18n name="chao">
  <s:text name="welcome"/>
</s:i18n>
chao 为类路径下资源文件基本名
如果要访问的资源文件在某个人包下,则可以
<s:i18n name="chao/package">
  <s:text name="welcome">
    <s:param>小明</s:param>
    <s:param>学习</s:param>
  <s:text>
</s:i18n>
上面访问package包下的资源文件,package为baseName

下面代码为全局范围资源文件访问实例代码:

chao_en_US.properties:

welcome={0},welcome to here{1}
chao_zh_CN.properties:
welcome={0}\uFF0C\u6b22\u8fce\u5149\u4e34{1}
struts.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
	<constant name="struts.custom.i18n.resources" value="chao"></constant><!-- value为baseName -->
	<package name="chao" extends="struts-default">
		<action name="hello_*" class="chao.ChaoAction" method="{1}">
			<result>/WEB-INF/page/message.jsp</result>
		</action>
	</package>
</struts>
ChaoAction.java:
package chao;

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

public class ChaoAction extends ActionSupport {

	private static final long serialVersionUID = 1L;

	@Override
	public String execute() {
		/*ActionContext.getContext().put("message", this.getText("welcome"));*/
		ActionContext.getContext().put("message", this.getText("welcome",new String[]{"xiaoming","study"}));
		return "success";
	}
}
index.jsp:
<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<!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">
<title>Insert title here</title>
</head>
<body>
	<%-- <s:text name="welcome"></s:text> --%>
	<s:text name="welcome">
	<s:param>小明</s:param>
	<s:param>学习</s:param>
</s:text>
</body>
</html>
message.jsp:
<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<!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">
<title>Insert title here</title>
</head>
<body>${message }
</body>
</html>






你可能感兴趣的:(struts2,国际化)