<x:param>标签用于在格式化XML时传递所需要的参数。它的属性和描述与<c:param>标签相同,这里不再赘述。<o:p></o:p>
看到I18N就应该想到知识“国际化”,I18N formatting标签库就是用于在JSP页面中做国际化的动作。在该标签库中的标签一共有12个,被分为了两类,分别是:<o:p></o:p>
q 国际化核心标签:<fmt:setLocale>、<fmt:bundle>、<fmt:setBundle>、<fmt:message>、<fmt:param>、<fmt:requestEncoding>。<o:p></o:p>
q 格式化标签:<fmt:timeZone>、<fmt:setTimeZone>、<fmt:formatNumber>、<fmt:parseNumber>、<fmt:formatDate>、<fmt:parseDate>。<o:p></o:p>
下面只选择其中常见的一些标签和属性进行介绍。<o:p></o:p>
<fmt:setLocale>标签用于设置Locale环境。它的属性和描述如表9.17所示:<o:p></o:p>
表9.17 <fmt:setLocale>标签属性和说明<o:p></o:p>
属性<o:p></o:p> |
描述<o:p></o:p> |
value<o:p></o:p> |
Locale环境的指定,可以是java.util.Locale或String类型的实例<o:p></o:p> |
scope<o:p></o:p> |
Locale环境变量的作用范围(可选)<o:p></o:p> |
下面看一个示例:<o:p></o:p>
<fmt:setLocale value="zh_TW"/><o:p></o:p>
表示设置本地环境为繁体中文。<o:p></o:p>
这两组标签用于资源配置文件的绑定,唯一不同的是<fmt:bundle>标签将资源配置文件绑定于它标签体中的显示,<fmt:setBundle>标签则允许将资源配置文件保存为一个变量,在之后的工作可以根据该变量来进行。<o:p></o:p>
根据Locale环境的不同将查找不同后缀的资源配置文件,这点在国际化的任何技术上都是一致的,通常来说,这两种标签单独使用是没有意义的,它们都会与I18N formatting标签库中的其他标签配合使用。它们的属性和描述如表9.18所示:<o:p></o:p>
表9.18 <fmt:bundle>、<fmt:setBundle>标签属性和说明<o:p></o:p>
属性<o:p></o:p> |
描述<o:p></o:p> |
basename<o:p></o:p> |
资源配置文件的指定,只需要指定文件名而无须扩展名,二组标签共有的属性<o:p></o:p> |
var<o:p></o:p> |
<fmt:setBundle>独有的属性,用于保存资源配置文件为一个变量<o:p></o:p> |
scope<o:p></o:p> |
变量的作用范围<o:p></o:p> |
下面看一个示例<o:p></o:p>
<fmt:setLocale value="zh_CN"/><o:p></o:p>
<fmt:setBundle basename="applicationMessage" var="applicationBundle"/><o:p></o:p>
该示例将会查找一个名为applicationMessage_zh_CN.properties的资源配置文件,来作为显示的Resource绑定。<o:p></o:p>
用于信息显示的标签,将显示资源配置文件中定义的信息。它的属性和描述如表9.19所示:<o:p></o:p>
表9.19 <fmt:message>标签属性和说明<o:p></o:p>
属性<o:p></o:p> |
描述<o:p></o:p> |
key<o:p></o:p> |
资源配置文件的“键”指定<o:p></o:p> |
bundle<o:p></o:p> |
若使用<fmt:setBundle>保存了资源配置文件,该属性就可以从保存的资源配置文件中进行查找<o:p></o:p> |
var<o:p></o:p> |
将显示信息保存为一个变量<o:p></o:p> |
scope<o:p></o:p> |
变量的作用范围<o:p></o:p> |
下面看一个示例:<o:p></o:p>
<fmt:setBundle basename="applicationMessage" var="applicationBundle"/><o:p></o:p>
<fmt:bundle basename="applicationAllMessage"><o:p></o:p>
<fmt:message key="userName" /><o:p></o:p>
<p><o:p></o:p>
<fmt:message key="passWord" bundle="${applicationBundle}" /><o:p></o:p>
</fmt:bundle><o:p></o:p>
该示例使用了两种资源配置文件的绑定的做法,“applicationMessage”资源配置文件利用<fmt:setBundle>标签被赋于了变量“applicationBundle”,而作为<fmt:bundle>标签定义的“applicationAllMessage”资源配置文件作用于其标签体内的显示。<o:p></o:p>
q 第一个<fmt:message>标签将使用“applicationAllMessage”资源配置文件中“键”为“userName”的信息显示。<o:p></o:p>
q 第二个<fmt:message>标签虽然被定义在<fmt:bundle>标签体内,但是它使用了bundle属性,因此将指定之前由<fmt:setBundle>标签保存的“applicationMessage”资源配置文件,该“键”为“passWord”的信息显示。<o:p></o:p>
<fmt:param>标签应该位于<fmt:message>标签内,将为该消息标签提供参数值。它只有一个属性value。<o:p></o:p>
<fmt:param>标签有两种使用版本,一种是直接将参数值写在value属性中,另一种是将参数值写在标签体内。<o:p></o:p>
<fmt:requestEncoding>标签用于为请求设置字符编码。它只有一个属性value,在该属性中可以定义字符编码。<o:p></o:p>
这两组标签都用于设定一个时区。唯一不同的是<fmt:timeZone>标签将使得在其标签体内的工作可以使用该时区设置,<fmt:setBundle>标签则允许将时区设置保存为一个变量,在之后的工作可以根据该变量来进行。它们的属性和描述如表9.20所示:<o:p></o:p>