• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
zziy的java笔记
博客园    首页    新随笔    联系   管理    订阅  订阅
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"/>

  
课时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";
    }

  
课时26

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

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

  
课时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>

 

posted on 2015-10-27 12:45  zziy  阅读(161)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3