JSTL与Struts的结合(四)

看到 I18N 就应该想到知识“国际化”, I18N formatting 标签库就是用于在 JSP 页面中做国际化的动作。在该标签库中的标签一共有 12 个,被分为了两类,分别是:
q         国际化核心标签: <fmt:setLocale> <fmt:bundle> <fmt:setBundle> <fmt:message> <fmt:param> <fmt:requestEncoding>
q         格式化标签: <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.Locale或String类型的实例
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
以本地化的形式来解析字符串,该属性的内容应为String或java.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
本地化 的形式来解析字符串,该属性的内容为String或 java.util.Locale类型的实例
timeZone
指定解析格式化日期的 时区
<fmt:parseNumber> <fmt:parseDate> 两组标签都实现解析 字符串 为一个具体对象实例的工作,因此,这两组解析标签对 var 属性的字符串参数要求非常严格。就 JSP 页面的表示层前段来说,处理这种解析本不属于份内之事,因此 <fmt:parseNumber> <fmt:parseDate> 两组标签应该尽量少用,替代工作的地方应该在服务器端表示层的后段,比如在 Servlet 中。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值