posts - 75,comments - 83,trackbacks - 0
看到 I18N 就应该想到知识“国际化”, I18N formatting 标签库就是用于在 JSP 页面中做国际化的动作。在该标签库中的标签一共有 12 个,被分为了两类,分别是:
1. 国际化核心标签:<fmt:setLocale><fmt:bundle><fmt:setBundle><fmt:message><fmt:param><fmt:requestEncoding> 
2. 格式化标签:<fmt:timeZone><fmt:setTimeZone><fmt:formatNumber><fmt:parseNumber><fmt:formatDate><fmt:parseDate>

下面只选择其中常见的一些标签和属性进行介绍。

9.5.1 用于设置本地化环境的<fmt:setLocale>标签

<fmt:setLocale>标签用于设置Locale环境。它的属性和描述如表9.17所示:

9.17 <fmt:setLocale>标签属性和说明

属性

描述

value

Locale环境的指定,可以是java.util.LocaleString类型的实例

scope

Locale环境变量的作用范围(可选)

下面看一个示例:

<fmt:setLocale value="zh_TW"/>
表示设置本地环境为繁体中文。

9.5.2 用于资源文件绑定的<fmt:bundle><fmt:setBundle>标签

这两组标签用于资源配置文件的绑定,唯一不同的是<fmt:bundle>标签将资源配置文件绑定于它标签体中的显示,<fmt:setBundle>标签则允许将资源配置文件保存为一个变量,在之后的工作可以根据该变量来进行。

根据Locale环境的不同将查找不同后缀的资源配置文件,这点在国际化的任何技术上都是一致的,通常来说,这两种标签单独使用是没有意义的,它们都会与I18N formatting标签库中的其他标签配合使用。它们的属性和描述如表9.18所示:

9.18 <fmt:bundle><fmt:setBundle>标签属性和说明

属性

描述

basename

资源配置文件的指定,只需要指定文件名而无须扩展名,二组标签共有的属性

var

<fmt:setBundle>独有的属性,用于保存资源配置文件为一个变量

scope

变量的作用范围



下面看一个示例

<fmt:setLocale value="zh_CN"/>

<fmt:setBundle basename="applicationMessage" var="applicationBundle"/>

该示例将会查找一个名为applicationMessage_zh_CN.properties的资源配置文件,来作为显示的Resource绑定。

9.5.3 用于显示资源配置文件信息的<fmt:message>标签

用于信息显示的标签,将显示资源配置文件中定义的信息。它的属性和描述如表9.19所示:

9.19 <fmt:message>标签属性和说明


属性

描述

key

资源配置文件的“键”指定

bundle

若使用<fmt:setBundle>保存了资源配置文件,该属性就可以从保存的资源配置文件中进行查找

var

将显示信息保存为一个变量

scope

变量的作用范围




下面看一个示例:

<fmt:setBundle basename="applicationMessage" var="applicationBundle"/>

<fmt:bundle basename="applicationAllMessage">

         <fmt:message key="userName" />

         <p>

         <fmt:message key="passWord" bundle="${applicationBundle}" />

</fmt:bundle>

该示例使用了两种资源配置文件的绑定的做法,“applicationMessage”资源配置文件利用<fmt:setBundle>标签被赋于了变量“applicationBundle”,而作为<fmt:bundle>标签定义的“applicationAllMessage”资源配置文件作用于其标签体内的显示。

q         第一个<fmt:message>标签将使用“applicationAllMessage”资源配置文件中“键”为“userName”的信息显示。

q         第二个<fmt:message>标签虽然被定义在<fmt:bundle>标签体内,但是它使用了bundle属性,因此将指定之前由<fmt:setBundle>标签保存的“applicationMessage”资源配置文件,该“键”为“passWord”的信息显示。

9.5.4 用于参数传递的<fmt:param>标签

<fmt:param>标签应该位于<fmt:message>标签内,将为该消息标签提供参数值。它只有一个属性value

<fmt:param>标签有两种使用版本,一种是直接将参数值写在value属性中,另一种是将参数值写在标签体内。

9.5.6 用于为请求设置字符编码的<fmt:requestEncoding>标签

<fmt:requestEncoding>标签用于为请求设置字符编码。它只有一个属性value,在该属性中可以定义字符编码。

9.5.7 用于设定时区的<fmt:timeZone><fmt:setTimeZone>标签

这两组标签都用于设定一个时区。唯一不同的是<fmt:timeZone>标签将使得在其标签体内的工作可以使用该时区设置,<fmt:setBundle>标签则允许将时区设置保存为一个变量,在之后的工作可以根据该变量来进行。它们的属性和描述如表9.20所示:

9.20 <fmt:timeZone><fmt:setTimeZone>标签属性和说明

属性

描述

value

时区的设置

var

<fmt:setTimeZone>独有的属性,用于保存时区为一个变量

scope

变量的作用范围




9.5.8 用于格式化数字的<fmt:formatNumber>标签

<fmt:formatNumber>签用于格式化数字。它的属性和描述如表9.21所示:

9.21 <fmt:formatNumber>标签属性和说明

属性

描述

value

格式化的数字,该数值可以是String类型或java.lang.Number类型的实例

type

格式化的类型

pattern

格式化模式

var

结果保存变量

scope

变量的作用范围

maxIntegerDigits

指定格式化结果的最大值

minIntegerDigits

指定格式化结果的最小值

maxFractionDigits

指定格式化结果的最大值,带小数

minFractionDigits

指定格式化结果的最小值,带小数

<fmt:formatNumber>标签实际是对应java.util.NumberFormat类,type属性的可能值包括currency(货币)、number(数字)和percent(百分比)。

下面看一个示例。

<fmt:formatNumber value="1000.888" type="currency" var="money"/>

该结果将被保存在“money”变量中,将根据Locale环境显示当地的货币格式。

9.5.9 用于解析数字的<fmt:parseNumber>标签

<fmt:parseNumber>标签用于解析一个数字,并将结果作为java.lang.Number类的实例返回。<fmt:parseNumber>标签看起来和<fmt:formatNumber>标签的作用正好相反。它的属性和描述如表9.22所示:

9.22 <fmt:parseNumber>标签属性和说明

属性

描述

value

将被解析的字符串

type

解析格式化的类型

pattern

解析格式化模式

var

结果保存变量,类型为java.lang.Number

scope

变量的作用范围

parseLocale

以本地化的形式来解析字符串,该属性的内容应为Stringjava.util.Locale类型的实例

下面看一个示例。

<fmt:parseNumber value="15%" type="percent" var="num"/>

解析之后的结果为“0.15”。

9.5.10 用于格式化日期的<fmt:formatDate>标签

<fmt:formatDate>标签用于格式化日期。它的属性和描述如表9.23所示:

9.23 <fmt:formatDate>标签属性和说明

属性

描述

value

格式化的日期,该属性的内容应该是java.util.Date类型的实例

type

格式化的类型

pattern

格式化模式

var

结果保存变量

scope

变量的作用范围

timeZone

指定格式化日期的时区

<fmt:formatDate>标签与<fmt:timeZone><fmt:setTimeZone>两组标签的关系密切。若没有指定timeZone属性,也可以通过<fmt:timeZone><fmt:setTimeZone>两组标签设定的时区来格式化最后的结果。

9.5.11 用于解析日期的<fmt:parseDate>标签

<fmt:parseDate>标签用于解析一个日期,并将结果作为java.lang.Date类型的实例返回。<fmt:parseDate>标签看起来和<fmt:formatDate>标签的作用正好相反。它的属性和描述如表9.24所示:

9.24 <fmt:parseDate>标签属性和说明

属性

描述

value

将被解析的字符串

type

解析格式化的类型

pattern

解析格式化模式

var

结果保存变量,类型为java.lang.Date

scope

变量的作用范围

parseLocale

以本地化的形式来解析字符串,该属性的内容为Stringjava.util.Locale类型的实例

timeZone

指定解析格式化日期的时区

<fmt:parseNumber><fmt:parseDate>两组标签都实现解析字符串为一个具体对象实例的工作,因此,这两组解析标签对var属性的字符串参数要求非常严格。就JSP页面的表示层前段来说,处理这种解析本不属于份内之事,因此<fmt:parseNumber><fmt:parseDate>两组标签应该尽量少用,替代工作的地方应该在服务器端表示层的后段,比如在Servlet中。

posted on 2008-04-17 20:15 梓枫 阅读(432) 评论(0)  编辑  收藏 所属分类: jstl标签类

只有注册用户登录后才能发表评论。


网站导航: