您的位置:首页 > 编程语言 > Java开发

struts2 国际化资源文件测试

2014-03-18 16:05 260 查看
国际化资源文件包括:全局范围(在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 国际化