看到 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 环境显示当地的货币格式。
-
<fmt:formatNumber value="12" type="currency" pattern="$.00"/>
-
-
<fmt:formatNumber value="12" type="currency" pattern="$.0#"/>
-
-
<fmt:formatNumber value="1234567890" type="currency"/>
-
-
<fmt:formatNumber value="123456.7891" pattern="#,#00.0#"/>
-
-
<fmt:formatNumber value="123456.7" pattern="#,#00.0#"/>
-
-
<fmt:formatNumber value="123456.7" pattern="#,#00.00#"/>
-
-
<fmt:formatNumber value="12" type="percent" />
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 中。
来自: http://hi.baidu.com/daisyseason/blog/item/2f7ff7caed6d794ff31fe758.html
相关推荐
### JSTL `fmt` 标签库详解 #### 一、引言 在Web开发过程中,为了满足不同地区用户的语言需求,实现网站或应用的国际化(I18N)至关重要。JavaServer Pages Standard Tag Library (JSTL) 提供了一系列便捷的方法来...
总结来说,使用JSTL fmt标签库实现国际化涉及创建和管理Resource Bundle,设置locale,注册资源包,以及在JSP页面中使用`fmt:message`、`fmt:formatDate`和`fmt:formatNumber`标签。这个过程可以帮助开发者构建出...
### JSTL `fmt:formatNumber` 数字与货币格式化 #### 一、概述 在Java Server Pages (JSP) 开发过程中,对数字进行格式化是非常常见的需求之一。例如,将数值按照特定的货币格式展示,或者将数字转换为百分比形式...
JSTL包括几个核心标签库,如c(条件语句)、fmt(格式化)、x(XML处理)等,这些库极大地提高了JSP代码的可读性和可维护性。 标题提到的"用于dreamweaver的标签提示和格式化.JSTL的c,fmt,x和struts2",意味着这个...
特别地,`standard.jar`包含了`javax.servlet.jsp.jstl.core`和`javax.servlet.jsp.jstl.fmt`等包,这些都是JSTL运行所必需的。 在使用JSTL时,我们需要将这两个jar包添加到项目的类路径(classpath)中,以便...
项目中添加 jstl.jar 和 standard.jar 两个jar包。...<%@ taglib uri="http://java.sun.com/jstl/fmt_rt" prefix="fmt"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
3. 使用JSTL标签:现在可以在JSP页面中使用JSTL标签,如`<c:forEach>`进行迭代,`<c:if>`进行条件判断,`<fmt:formatDate>`格式化日期等。 总之,JSTL是提升JSP页面编写效率的重要工具,而依赖注入则是现代Java应用...
**jstl-api-1.2.jar** 包含了JSTL的接口定义,定义了各种标签的API,比如`<c:forEach>`、`<fmt:formatDate>`等。这个jar文件通常被添加到项目的编译类路径(classpath)中,这样编译器就可以识别JSTL相关的代码,并...
2. `standard.jar`:这个文件是Apache Tomcat提供的一个名为JSTL Standard Tag Library的实现,通常包含了jakarta.servlet.jsp.jstl.core和jakarta.servlet.jsp.jstl.fmt等包。这些包提供了与JSTL配合使用的其他功能...
而"standard-1.1.2.jar"则是JSTL依赖的另一个库,它包含了Tomcat等Servlet容器中的一些标准API,如Javax.servlet.jsp.jstl.core、javax.servlet.jsp.jstl.fmt和javax.servlet.jsp.jstl.sql等包,这些是JSTL运行所...
这样,就可以在页面中使用`c:`和`fmt:`前缀的JSTL标签了。 **JSTL与EL的协同工作**:虽然EL可以独立于JSTL使用,但两者结合使用能发挥更大的效能。JSTL的标签可以接收EL表达式作为参数,使得页面逻辑更加简洁。...
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> ``` 3. 开始使用JSTL标签,例如: ```jsp ${list}" var="item"> ${item.name} ``` 总之,JSTL是Java Web开发中一个强大的工具,它通过...
- **ext之树事件.txt**:ExtJS库中的树形控件事件处理,JSTL通常不涉及前端交互,但可以配合后台逻辑。 - **jstl的使用.txt**:更深入的JSTL使用指南,包括各种标签的详细用法和示例。 - **Ext.MessageBox.Show()...
JSTL标签所需要的tld文件,包括 c.tld、fmt.tld、fn.tld 三个 几乎所有的JSTL标签下载的zip中都只有一个c.tld,然后只讲解<C:>标签怎么用,其实<fmt:> <fn:>标签也非常好用和实用,找了好久才找到...
**JSTL的XML库(fmt、func、tagext)**: - `<fmt:formatDate>` 和 `<fmt:formatNumber>`:格式化日期和数字。 - `<fmt:message>` 和 `<fmt:bundle>`:国际化支持。 - `<fn:length>` 和 `<fn:substring>`:函数标签...
`<fmt:formatDate>`用于格式化日期和时间,`<fmt:formatNumber>`用于格式化数字,`<fmt:message>`则用于国际化和本地化消息。这些标签对于创建用户友好的、符合各地习惯的界面非常有帮助。 通过“JSTLdemo”这个...
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> ``` 然后,你可以使用`fmt`库中的标签,如`<fmt:formatDate>`来格式化日期: ```jsp <fmt:formatDate value="${yourDateVariable}" pattern=...
例如`<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>`, `<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>`, 等等。 通过这些标签,开发者可以减少在JSP页面中编写Java脚本...
`jstl-impl-1.2.jar`包含了处理表达式语言(EL, Expression Language)、核心标签库(Core)、函数库(Function)、国际化(fmt)以及SQL操作等的具体实现。 **JSTL 1.2 主要功能及标签** - **Core标签库(c)** ...