struts2视频学习笔记 24-27(国际化)

时间:2021-11-12 08:56:33

struts2视频学习笔记 24-27(国际化) 课时24

  • 配置国际化全局资源文件、输出国际化信息

1.准备资源文件,添加到src目录下,资源文件的命名格式如下:
baseName_language_country.properties
baseName_language.properties
baseName.properties
其中baseName是资源文件的基本名,我们可以自定义,但language和country必须是java支持的语言和国家。如:
*: test_zh_CN.properties

内容:welcome=欢迎测试

welcome=\u6B22\u8FCE\u6D4B\u8BD5

对于中文的属性文件,我们编写好后,应该使用jdk提供的native2ascii命令把文件转换为unicode编码的文件(eclipse自动转换)。命令的使用方式如下:
native2ascii  源文件.properties  目标文件.properties

美国: test_en_US.properties

内容:welcome=welcome to test

2.

<constant name="struts.custom.i18n.resources" value="test"/>

3.在JSP页面中访问国际化信息

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %> <!-- struts2标签 -->
<!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>校验</title>
</head>
<body>
<s:text name="welcome"></s:text>
</body>

在action中访问国际化信息

package tutorial;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport; public class Person extends ActionSupport{ @Override
public String execute() throws Exception {
ActionContext.getContext().put("message", getText("welcome"));
return "message";
} }

在表单标签中,通过key属性指定资源文件中的key,如:
<s:textfield name="realname" key="welcome"/>

struts2视频学习笔记 24-27(国际化)   struts2视频学习笔记 24-27(国际化)
struts2视频学习笔记 24-27(国际化) 课时25

  • 输出带有占位符的国际化信息

资源文件中的内容如下:

welcome={0},欢迎测试{1}

welcome={0},welcome to test{1}

在jsp页面中输出带占位符的国际化信息

<s:text name="welcome">
<s:param>zzy</s:param>
<s:param>study</s:param>
</s:text>

在Action类中获取带占位符的国际化信息,可以使用getText(String key, String[] args)或getText(String aTextName, List args)方法。

public String execute() throws Exception {
ActionContext.getContext().put("message", this.getText("welcome",new String[]{"zzy","study"}));
return "message";
}

struts2视频学习笔记 24-27(国际化)   struts2视频学习笔记 24-27(国际化)
struts2视频学习笔记 24-27(国际化) 课时26

  • 配置包范围国际化资源文件

     在java的包下放置package_language_country.properties资源文件,package为固定写法,处于该包及子包下的action都可以访问该资源。当查找指定key的消息时,系统会先从package资源文件查找,当找不到对应的key时,才会从常量struts.custom.i18n.resources指定的资源文件(全局范围资源文件)中寻找。

struts2视频学习笔记 24-27(国际化)   struts2视频学习笔记 24-27(国际化)
struts2视频学习笔记 24-27(国际化) 课时27

  • 配置Action范围国际化资源文件

     在Action类所在的路径,放置ActionClassName_language_country.properties资源文件,ActionClassName为action类的简单名称。

  • 当查找指定key的消息时,系统会先从ActionClassName_language_country.properties资源文件查找,如果没有找到对应的key,然后沿着当前包往上查找基本名为package 的资源文件,一直找到最顶层包。如果还没有找到对应的key,最后会从常量struts.custom.i18n.resources指定的资源文件中寻找。
  • JSP中直接访问某个资源文件

    struts2为我们提供了<s:i18n>标签,使用<s:i18n>标签我们可以在类路径下直接从某个资源文件中获取国际化数据,而无需任何配置:

<s:i18n name="test">
<s:text name="welcome">
<s:param>zzy</s:param>
<s:param>study</s:param>
</s:text>
</s:i18n>

    test为类路径下资源文件的基本名。

    

    如果要访问的资源文件在类路径的某个包下:

<s:i18n name="tutorial/package">
  <s:text name="welcome">
  <s:param>zzy</s:param>
  <s:param>study</s:param>
  </s:text>
</s:i18n>