一、<fmt:formatNumber>

​<fmt:formatNumber>​​标签用于格式化数字,百分比和货币。

属性:

​<fmt:formatNumber>​​标签具有如下所示属性:

属性

描述

是否必需

默认值

value

显示的数值

type

数值、货币或百分比

数值

pattern

为输出指定一个自定义格式模式

currencyCode

Currency代码(for type="currency")

来自默认语言环境

currencySymbol

Currency符号(for type="currency")

来自默认语言环境

groupingUsed

是否将数值分组(TRUE or FALSE)

true

maxIntegerDigits

输出的整数位数的最大值

minIntegerDigits

输出的整数位数的最小值

maxFractionDigits

输出的小数位数的最大值

minFractionDigits

输出的小数位数的最小值

var

存储格式化数字的变量名

页面输出

scope

存储格式化数字的变量范围

页面

  • 如果type属性是百分比或数字,那么可以使用一些数字-格式化属性。maxIntegerDigits和minIntegerDigits属性允许指定数字的非小数部分的大小。如果实际数字超过了maxIntegerDigits,那么数字就会被截断。
  • 属性同样允许确定使用多少为小数。minFractionalDigits和maxFractionalDigits属性允许指定小数位数。如果数字超过了小数位数的最大值,那么数字就会被截断。
  • 分组可以用来在成千上万组之间插入逗号。通过将groupingIsUsed属性设置为真或假来指定分组。当分组与minIntegerDigits一起使用时,必须多加小心来得到预想的结果。
  • 可能会选择使用pattern属性。该属性可以包含特殊字符,指定有多喜欢编码的数字。下表展示了这些代码。

Symbol

Description


0



代表了一个数字。



E



代表了指数形式。



#



代表一个数字;显示0为缺席。



.



作为十进制分隔符的一个占位符。



,



作为分组分隔符的一个占位符。



;



分隔形式



-



作为默认的负数前缀。



%



乘以100并作为百分比显示。



?



乘以1000并作为千分比显示。



¤



代表了货币符号; 被动态的货币符号取代。



X



表明任何其他可以用作前缀或后缀的字符。



'



用于在前缀或后缀中引用特殊字符。


实例:



<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

<html>
<head>
<title>JSTL fmt:formatNumber Tag</title>
</head>
<body>
<h3>Number Format:</h3>
<c:set var="balance" value="120000.2309" />
<p>Formatted Number (1): <fmt:formatNumber value="${balance}" type="currency"/></p>
<p>Formatted Number (2): <fmt:formatNumber type="number" maxIntegerDigits="3" value="${balance}" /></p>
<p>Formatted Number (3): <fmt:formatNumber type="number" maxFractionDigits="3" value="${balance}" /></p>
<p>Formatted Number (4): <fmt:formatNumber type="number" groupingUsed="false" value="${balance}" /></p>
<p>Formatted Number (5): <fmt:formatNumber type="percent" maxIntegerDigits="3" value="${balance}" /></p>
<p>Formatted Number (6): <fmt:formatNumber type="percent" minFractionDigits="10" value="${balance}" /></p>
<p>Formatted Number (7): <fmt:formatNumber type="percent" maxIntegerDigits="3" value="${balance}" /></p>
<p>Formatted Number (8): <fmt:formatNumber type="number" pattern="###.###E0" value="${balance}" /></p>
<p>Currency in USA :
<fmt:setLocale value="en_US"/>
<fmt:formatNumber value="${balance}" type="currency"/></p>
</body>
</html>


这将会产生如下所示结果:

JSTL-格式标签库_java

二、<fmt:parseNumber>

​<fmt:parseNumber>​​标签用于解析数字、百分比和货币。

属性:

​<fmt:parseNumber>​​标签具有如下所示属性:

属性

描述

是否必需

默认值

value

要读取(解析)的数值

Body

type

数字、货币或百分比

数字

parseLocale

解析数字时使用的语言环境

默认语言环境

integerOnly

解析一个整数(true)还是解析一个浮点数(false)

false

pattern

自定义解析模式

timeZone

显示日期的时区

默认的时区

var

存储解析数字的变量名

页面输出

scope

存储格式化数字的变量范围

页面

提供的pattern属性的工作方式与<fmt:formatNumber>标签的pattern属性类似。然而,在解析的情况中,pattern属性告诉解析器想要什么格式。

实例:



<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

<html>
<head>
<title>JSTL fmt:parseNumber Tag</title>
</head>
<body>
<h3>Number Parsing:</h3>
<c:set var="balance" value="1250003.350" />

<fmt:parseNumber var="i" type="number" value="${balance}" />
<p>Parsed Number (1) : <c:out value="${i}" /></p>
<fmt:parseNumber var="i" integerOnly="true" type="number" value="${balance}" />
<p>Parsed Number (2) : <c:out value="${i}" /></p>

</body>
</html>


这将会产生如下所示结果:

JSTL-格式标签库_jsp基础_02

三、<fmt:formatDate>

​<fmt:formatDate>​​标签用于以多种方式格式化日期。

属性:

​<fmt:formatDate>​​标签具有如下所示属性:

属性

描述

是否必需

默认值

value

显示的日期值

type

日期、时间或两者

日期

dateStyle

FULL,LONG,MEDIUM,SHORT,或默认

默认

timeStyle

FULL,LONG,MEDIUM,SHORT,或默认

默认

pattern

自定义格式化模式

timeZone

显示的日期时区

默认的时区

var

存储格式化日期的变量名

页面输出

scope

存储格式化日期的变量范围

页面

pattern属性指定了更精确地日期处理:

代码

目的

示例


G



时代指示器



AD



y





2002



M





April & 04



d



一个月中的某一天



20



h



时间(12-hour time)



12



H



时间(24-hour time)



0



m



分钟



45



s





52



S



毫秒



970



E



一周中的某一天



Tuesday



D



一年中的某一天



180



F



一个月中的某一周的某一天



2 (2nd Wed in month)



w



一年中的某一周



27



W



一个月中的某一周



2



a



a.m./p.m. 显示器



PM



k



时间(12-hour time)



24



K



时间(24-hour time)



0



z



时区



Central Standard Time



'


 


文本消逝



''


 


单引号


实例:



<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

<html>
<head>
<title>JSTL fmt:dateNumber Tag</title>
</head>
<body>
<h3>Number Format:</h3>
<c:set var="now" value="<%=new java.util.Date()%>" />

<p>Formatted Date (1): <fmt:formatDate type="time" value="${now}" /></p>
<p>Formatted Date (2): <fmt:formatDate type="date" value="${now}" /></p>
<p>Formatted Date (3): <fmt:formatDate type="both" value="${now}" /></p>
<p>Formatted Date (4): <fmt:formatDate type="both" dateStyle="short" timeStyle="short" value="${now}" /></p>
<p>Formatted Date (5): <fmt:formatDate type="both" dateStyle="medium" timeStyle="medium" value="${now}" /></p>
<p>Formatted Date (6): <fmt:formatDate type="both" dateStyle="long" timeStyle="long" value="${now}" /></p>
<p>Formatted Date (7): <fmt:formatDate pattern="yyyy-MM-dd" value="${now}" /></p>

</body>
</html>


这将会产生如下所示的结果:

JSTL-格式标签库_bundle_03

四、<fmt:parseDate>

​<fmt:parseDate>​​标签用于解析日期。

属性:

​<fmt:parseDate>​​标签具有如下所示属性:

属性

描述

是否必需

默认值

value

要读取(解析)的日期值

Body

type

日期、时间或两者

日期

dateStyle

FULL,LONG,MEDIUM,SHORT,或默认

默认

timeStyle

FULL,LONG,MEDIUM,SHORT,或默认

默认

parseLocale

解析日期时使用的语言环境

默认语言环境

pattern

自定义解析模式

timeZone

解析的日期的时区

默认的时区

var

存储解析日期的变量名

页面输出

scope

存储格式化日期的变量范围

页面

实例:



<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

<html>
<head>
<title>JSTL fmt:parseDate Tag</title>
</head>
<body>
<h3>Date Parsing:</h3>
<c:set var="now" value="20-10-2010" />

<fmt:parseDate value="${now}" var="parsedEmpDate" pattern="dd-MM-yyyy" />
<p>Parsed Date: <c:out value="${parsedEmpDate}" /></p>

</body>
</html>


这将产生如下所示的结果:

JSTL-格式标签库_java_04

五、<fmt:bundle>

​<fmt:bundle>​​标签使指定的包对所有的出现在​​<fmt:bundle>​​和​​</fmt:bundle>​​标签之间的​​<fmt:message>​​标签是可用的。这可以节省额外的步骤为每个​​<fmt:message>​​标签指定资源包。

例如,下面的两个​​<fmt:bundle>​​块会产生相同的输出:



<fmt:bundle basename="com.jsoft.Example">
<fmt:message key="count.one"/>
</fmt:bundle>
<fmt:bundle basename="com.jsoft.Example" prefix="count.">
<fmt:message key="title"/>
</fmt:bundle>


 

属性:

​<fmt:bundle>​​标签具有如下所示属性:

属性

描述

是否必需

默认值

basename

指定了要被加载的资源包的基名。

prefix

在<fmt:message>子标签中预先考虑的每个键值名

实例:

资源包包含特定于本地语言环境的对象。资源包包含键/值对。当程序需要一个特定于本地语言环境的资源时,要把所有的键与所有的语言环境保持一致,但可以有特定于语言环境的转换值。资源包中帮助提供特定于语言环境的内容。

一个Java资源包文件包含一系列key-to-string映射。关注的方法包括创建扩展java.util.ListResourceBundle类的编译后的Java类。必须编译这些类文件并使其可用于Web应用程序的类路径中。

定义一个默认的资源包,如下所示:



package com.jsoft;
import java.util.ListResourceBundle;
public class Example extends ListResourceBundle {
public Object[][] getContents() {
return contents;
}
static final Object[][] contents = {
{"count.one", "One"},
{"count.two", "Two"},
{"count.three", "Three"},
};
}


编译上述类Example.class并确保它在Web应用程序中的类路径中时可用的。现在可以使用下面的JSTL标签来显示三个数字,如下所示:



<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
<title>JSTL fmt:bundle Tag</title>
</head>
<body>

<fmt:bundle basename="com.jsoft.Example" prefix="count.">
<fmt:message key="one"/><br/>
<fmt:message key="two"/><br/>
<fmt:message key="three"/><br/>
</fmt:bundle>

</body>
</html>


这会产生如下所示的结果:

JSTL-格式标签库_java_05

在不带前缀的情况下尝试上述例子,如下所示:



<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
<title>JSTL fmt:bundle Tag</title>
</head>
<body>

<fmt:bundle basename="com.jsoft.Example">
<fmt:message key="count.one"/><br/>
<fmt:message key="count.two"/><br/>
<fmt:message key="count.three"/><br/>
</fmt:bundle>

</body>
</html>


这会产生如下所示的结果:

JSTL-格式标签库_jsp_06

六、<fmt:setLocale>

​<fmt:setLocale>​​标签用于在语言环境配置变量中存储给定的语言环境。

属性:

​<fmt:setLocale>​​标签具有如下所示属性:

属性

描述

是否必需

默认值

value

指定了一个两部分代码,代表ISO-639语言代码和ISO-3166国家代码。

en_US

variant

浏览器特定的变量

scope

语言环境配置变量的范围

页面

实例:

资源包包含特定于本地语言环境的对象。资源包包含键/值对。当程序需要一个特定于本地语言环境的资源时,要把所有的键与所有的语言环境保持一致,但可以有特定于语言环境的转换值。资源包中帮助提供特定于语言环境的内容。

一个Java资源包文件包含一系列key-to-string映射。关注的方法包括创建扩展java.util.ListResourceBundle类的编译后的Java类。必须编译这些类文件并使其可用于Web应用程序的类路径中。

定义一个默认的资源包,如下所示:



package com.jsoft;

import java.util.ListResourceBundle;

public class Example extends ListResourceBundle {
public Object[][] getContents() {
return contents;
}
static final Object[][] contents = {
{"count.one", "One"},
{"count.two", "Two"},
{"count.three", "Three"},
};
}


现在再定义一个资源包,使用西班牙语:



package com.jsoft;

import java.util.ListResourceBundle;

public class Example_es_ES extends ListResourceBundle {
public Object[][] getContents() {
return contents;
}
static final Object[][] contents = {
{"count.one", "Uno"},
{"count.two", "Dos"},
{"count.three", "Tres"},
};
}


编译上述类Example.class和Example_es_ES.class,确保它们在Web应用程序中的类路径中是可用的。现在可以使用下面的JSTL标签来显示三个数字,如下所示:



<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
<title>JSTL fmt:setLocale Tag</title>
</head>
<body>

<fmt:bundle basename="com.jsoft.Example">
<fmt:message key="count.one"/><br/>
<fmt:message key="count.two"/><br/>
<fmt:message key="count.three"/><br/>
</fmt:bundle>

<!-- Change the Locale -->
<fmt:setLocale value="es_ES"/>
<fmt:bundle basename="com.jsoft.Example">
<fmt:message key="count.one"/><br/>
<fmt:message key="count.two"/><br/>
<fmt:message key="count.three"/><br/>
</fmt:bundle>

</body>
</html>


这将产生如下所示结果:

JSTL-格式标签库_bundle_07

七、<fmt:setBundle>

​<fmt:setBundle>​​标签用于加载资源包,并把它存储在已命名的给定范围的变量中或存储在包配置变量中。

属性:

​<fmt:setBundle>​​标签具有如下所示属性:

属性

描述

是否必需

默认值

basename

资源包家族的基本名称,作为一个给定范围的变量或配置变量来显示

var

存储新包的变量名

取代默认值

scope

存储新包的变量范围

页面

实例:



<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
<title>JSTL fmt:setBundle Tag</title>
</head>
<body>

<fmt:setLocale value="en"/>
<fmt:setBundle basename="com.jsoft.Example" var="lang"/>

<fmt:message key="count.one" bundle="${lang}"/><br/>
<fmt:message key="count.two" bundle="${lang}"/><br/>
<fmt:message key="count.three" bundle="${lang}"/><br/>

</body>
</html>


这将产生如下所示结果:

JSTL-格式标签库_bundle_08

八、<fmt:timeZone>

​<fmt:timeZone>​​标签用于指定所有标签主体内用到的时区。

属性:

​<fmt:timeZone>​​标签具有如下所示属性:

属性

描述

是否必需

默认值

value

应用于主体的时区

实例:



<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
<title>JSTL fmt:timeZone Tag</title>
</head>

<body>
<c:set var="now" value="<%=new java.util.Date()%>" />
<table border="1" width="100%">
<tr>
<td width="100%" colspan="2" bgcolor="#0000FF">
<p align="center">
<b>
<font color="#FFFFFF" size="4">Formatting:
<fmt:formatDate value="${now}" type="both" timeStyle="long" dateStyle="long" />
</font>
</b>
</p>
</td>
</tr>

<c:forEach var="zone" items="<%=java.util.TimeZone.getAvailableIDs()%>">
<tr>
<td width="51%">
<c:out value="${zone}" />
</td>
<td width="49%">
<fmt:timeZone value="${zone}">
<fmt:formatDate value="${now}" timeZone="${zn}" type="both" />
</fmt:timeZone>
</td>
</tr>
</c:forEach>
</table>
</body>
</html>


这将产生如下所示结果:

JSTL-格式标签库_jsp_09

九、<fmt:setTimeZone>

​<fmt:setTimeZone>​​标签用于将时区对象复制到指定的范围变量中。

属性:

​<fmt:setTimeZone>​​标签具有如下所示属性:

属性

描述

是否必需

默认值

value

作为给定范围的变量或配置变量显示的时区

var

存储新时区的变量名

取代默认值

scope

存储新时区的变量范围

页面

实例:



<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
<title>JSTL fmt:setTimeZone Tag</title>
</head>
<body>
<c:set var="now" value="<%=new java.util.Date()%>" />
<p>Date in Current Zone: <fmt:formatDate value="${now}" type="both" timeStyle="long" dateStyle="long" /></p>
<p>Change Time Zone to GMT-8</p>
<fmt:setTimeZone value="GMT-8" />
<p>Date in Changed Zone: <fmt:formatDate value="${now}" type="both" timeStyle="long" dateStyle="long" /></p>
</body>
</html>


这将产生如下所示的结果:

JSTL-格式标签库_java_10

十、<fmt:message>

​<fmt:message>​​标签将键映射到本地化的消息中并执行参数替换。

属性:

​<fmt:message>​​标签具有如下所示属性:

属性

描述

是否必需

默认值

key

要检索的消息键

Body

bundle

使用的资源包

默认包

var

存储本地化消息的变量名

页面输出

scope

存储本地化消息的变量范围

页面

实例:



<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
<title>JSTL fmt:message Tag</title>
</head>
<body>

<fmt:setLocale value="en"/>
<fmt:setBundle basename="com.jsoft.Example" var="lang"/>

<fmt:message key="count.one" bundle="${lang}"/><br/>
<fmt:message key="count.two" bundle="${lang}"/><br/>
<fmt:message key="count.three" bundle="${lang}"/><br/>

</body>
</html>


这将会生成如下所示结果:

JSTL-格式标签库_bundle_11

十一、<fmt:requestEncoding>

​<fmt:requestEncoding>​​标签用于指定编码类型,该编码类型用于将数据传回到Web应用程序的表单中。

属性:

​<fmt:requestEncoding>​​标签具有如下所示属性:

属性

描述

是否必需

默认值

key

当解码请求参数时,想要应用的字符编码的名称

当想要为从表单发送的解码数据指定字符编码时,就会用到< fmt:requestEncoding >标签。该标签必须和与ISO-8859-1不同的字符编码一起使用。由于大多数浏览器在它们的请求中不包括内容类型的头信息,所以这个标签是必需的。

​<fmt:requestEncoding>​​标签的目的是指定请求的内容类型。必须指定内容类型,即使页面编码生成的响应式通过页面指令的内容类型属性指定的。这是因为响应的实际语言环境(以及字符编码)可能与页面指令中指定的值不同。

如果页面包含一个I18N-capable格式化操作,通过调用ServletResponse.setLocale()设置了响应的语言环境(以及字符编码),任何在页面指令中指定的编码都将被覆盖。

实例:



<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
<title>JSTL fmt:message Tag</title>
</head>
<body>

<fmt:requestEncoding value="UTF-8" />
<fmt:setLocale value="es_ES"/>
<fmt:setBundle basename="com.jsoft.Example" var="lang"/>

<fmt:message key="count.one" bundle="${lang}"/><br/>
<fmt:message key="count.two" bundle="${lang}"/><br/>
<fmt:message key="count.three" bundle="${lang}"/><br/>

</body>
</html>


这将产生如下所示的结果:

JSTL-格式标签库_jsp基础_12