读书人

《研磨struts2》第九章 国际化 之 9.5

发布时间: 2012-08-10 12:19:33 作者: rapoo

《研磨struts2》第九章 国际化 之 9.5 Struts2访问国际化信息的不同方式

9.5??Struts2访问国际化信息的不同方式

为了示例的简洁,删除在9.4节中添加的I18NAction_zh_CN.properties文件和package.properties文件,只保留全局级国际化信息资源文件。并在message.properteis中增加一个带有参数的国际化信息。

?

java代码:查看复制到剪贴板打印
  1. labela?=?labela?in?zh_CN??
  2. labelb?=?labelb,{0}??

注意:本节中的访问,都是在浏览器使用中文zh_CN的前提下访问的。

9.5.1用<s:text>访问国际化信息

在前面已经使用了<s:text>标签来访问国际化信息,只需要在它的name属性上填入需要的key即可。下面,来看看它的其它的属性。

1:使用带参数的国际化信息

?????? 可以用参数把一些可变值传给国际化信息,在<s:text>标签访问国际化信息的时候,只需要配合上<s:param>子标签即可传入参数,示例如下:

?

java代码:查看复制到剪贴板打印
  1. <%@?taglib?prefix="s"?uri="/struts-tags"?%>??
  2. <s:text?name="labela"/>??
  3. <hr>??
  4. <s:text?name="labelb">??
  5. ????<s:param>ok</s:param>??
  6. </s:text>??

上面的示例中,key为labela的国际化信息没有参数,因此<s:text>标签直接结束,没有子标签;而key为labelb的国际化信息有参数,因此<s:text>标签用<s:param>子标签来传入参数值ok。在运行的时候,参数{0}被替换为ok,最终显示为:

《研磨struts2》第九章 国际化 之 9.5 Struts2访问国际化信息的不同形式

图9.7 使用<s:param>子标签为<s:text>标签传递参数的结果

2:指定国际化信息来源

?????? 再来添加一个国际化信息来源。比如,恢复包级国际化信息资源文件,也就是package_zh_CN.properties文件,内容如下:

?

java代码:查看复制到剪贴板打印
  1. labela?=?labela?in?zh_CN?with?package??

现在,同时存在全局级国际化信息资源和包级国际化信息资源,根据前面所学的知识,包级国际化信息资源会覆盖全局级国际化信息资源,因此,<s:text name=”labela”/>将会返回在package_zh_CN.properties中定义的labela = labela in zh_CN with package。

?????? 现在需要仍然显示全局级的国际化信息,该怎么办呢?

?????? 可以通过<s:i18n>标签,来为<s:text>标签指定国际化信息来源。如果<s:text>标签作为<s:i18n>标签的子标签出现,则会使用<s:i18n>指定的国际化信息来源。把jsp修改如下:

?

java代码:查看复制到剪贴板打印
  1. <%@?taglib?prefix="s"?uri="/struts-tags"?%>??
  2. ??
  3. <s:text?name="labela"/>??
  4. <hr>??
  5. <s:i18n?name="message">??
  6. ????<s:text?name="labela"/>??
  7. </s:i18n>??

解释一下如何引用国际化信息资源,仍然分为三种情况讨论:

读书人网 >软件架构设计

热点推荐