5.6 格式化行为
JSTL
提供了格式化和解析数字与日期的标签,它们是formatNumber
、formatDate
、timeZone
、setTimeZone
、parseNumber
和parseDate
。
引用格式化标签库
要使用这些标签,首先要在JSP页面中使用taglib
指令引入格式化标签库,如下所示:
1
| <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
|
如果忘了导入库,则eclipse中会显示如下错误信息:
1
| Unknown tag (fmt:formatNumber).
|
formatNumber
用于格式化数字。这个标签使你可以根据需要,利用它的各种属性来获得自己想要的格式。formatNumber
的语法有两种形式。
第一种形式没有body content
:
1 2 3 4 5 6 7 8 9 10 11 12 13
| <fmt:formatNumber value="numericValue" [type="{number|currency|percent}"] [pattern="customPattern"] [currencyCode="currencyCode"] [currencySymbol="currencySymbol"] [groupingUsed="{true|false}"] [maxIntegerDigits="maxIntegerDigits"] [minIntegerDigits="minIntegerDigits"] [maxFractionDigits="maxFractionDigits"] [minFractionDigits="minFractionDigits"] [var="varName"] [scope="{page|request|session|application}"] />
|
第二种形式有body content
:
1 2 3 4 5 6 7 8 9 10 11 12 13
| <fmt:formatNumber [type="{number|currency|percent}"] [pattern="customPattern"] [currencyCode="currencyCode"] [currencySymbol="currencySymbol"] [groupingUsed="{true|false}"] [maxIntegerDigits="maxIntegerDigits"] [minIntegerDigits="minIntegerDigits"] [maxFractionDigits="maxFractionDigits"] [minFractionDigits="minFractionDigits"] [var="varName"] [scope="{page|request|session|application}"]> numeric value to be formatted </fmt:formatNumber>
|
body content
是JSP
代码
属性 |
类型 |
描述 |
value+ |
字符串或数字 |
要格式化的数字化值 |
type+ |
字符串 |
说明该值是要被格式化成数字 、货币 ,还是百分比 。对应的属性值分别为number 、currency 、percent |
pattern+ |
字符串 |
定制格式化样式 |
currencyCode+ |
字符串 |
ISO 4217 货币码,仅当type="currency" 时使用 |
currencySymbol+ |
字符串 |
货币符号,仅当type="currency" 时使用 |
groupingUsed+ |
布尔 |
说明输出结果中是否包含组分隔符 |
maxIntegerDigits+ |
整数 |
规定输出结果的整数部分最多几位数字 |
minIntegerDigits+ |
整数 |
规定输出结果的整数部分最少几位数字 |
maxFractionDigits+ |
整数 |
规定输出结果的小数部分最多几位数字 |
minFractionDigits+ |
整数 |
规定输出结果的小数部分最少几位数字 |
var |
字符串 |
将输出结果存为字符串的有界变量名称 |
scope |
字符串 |
var 的范围。如果有scope 属性,则必须指定var 属性 |
formatNumber
标签的用途之一就是将数字格式化成货币。为此,可以利用currencyCode
属性来定义一个ISO 4217
货币代码。
格式化样式pattern说明
符号 |
描述 |
0 |
代表一位数字 |
E |
使用指数格式 |
# |
代表一位数字,若没有则显示0 ,前导0 和末尾0 不显示。 |
. |
小数点 |
, |
数字分组分隔符 |
; |
分隔格式 |
- |
使用默认负数前缀 |
% |
百分数 |
? |
千分数 |
xxxxxxx |
货币符号,使用实际的货币符号代替,如使用$ ,¥ 等等 |
X |
指定可以作为前缀或后缀的字符 |
' |
在前缀或后缀中引用特殊字符 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| <!-- 引入格式化标签库 --> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> ...... <!-- 格式化为数字,原样输出 --> <fmt:formatNumber value="12" type="number" /> <br> <!-- 格式化为数字,整数部分最少是3位数字 --> <fmt:formatNumber value="12" type="number" minIntegerDigits="3" /> <br> <!-- 格式化为数字,小数部分最少是2位数字 --> <fmt:formatNumber value="12" type="number" minFractionDigits="2" /> <br> <!-- 使用自定义格式,保留小数掉后三位 --> <!-- `0`代表一位数字 --> <!-- `.`小数点 --> <fmt:formatNumber value="123456.78" pattern=".000" /> <br> <!-- `#`代表一位数字,若没有则显示0,前导0和末尾0不显示。 --> <!-- `,`数字分组分隔符 --> <fmt:formatNumber value="123456.78" pattern="#,#00.0#" /> <br> <!-- 格式化为货币 --> <fmt:formatNumber value="12" type="currency" /> <br> <!-- 设置地区为美国 --> <fmt:setLocale value="en_US"/> <!-- 格式化为货币,取决于默认地区--> <fmt:formatNumber value="12" type="currency"/> <br> <!-- 格式化为百分数 --> <fmt:formatNumber value="0.12" type="percent" /> <br> <!-- 格式化为百分数,百分数小数点后面最少要有两位 --> <fmt:formatNumber value="0.125" type="percent" minFractionDigits="2" /> <br>
|
结果如下:
1 2 3 4 5 6 7 8 9
| 12 012 12.00 123456.780 123,456.78 ¥12.00 $12.00 12% 12.50%
|