JSTL的formatting tags可以用來格式化和顯示文字、日期、時間、數字。如果在JSP頁面中要用到該庫提供的tag的話,需要引入如下taglib:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
1. <fmt: formatNumber>
該tag包含有以下一些屬性:
Attribute | Description | Required | Default |
value | 需要顯示的數字 | Yes | None |
type | NUMBER, CURRENCY, or PERCENT | No | Number |
pattern | 自己定義一種輸出格式 | No | None |
currencyCode | Currency code (for type="currency") | No | From the default locale |
currencySymbol | 貨幣符號 | No | From the default locale |
groupingUsed | 是否分組顯示(TRUE or FALSE) | No | true |
maxIntegerDigits | 最多顯示的整數位數 | No | None |
minIntegerDigits | 至少顯示的整數位數 | No | None |
maxFractionDigits | 最多顯示的小數位數 | No | None |
minFractionDigits | 最少顯示的小數位數 | No | None |
var | 儲存格式化後的值的變數 | No | Print to page |
scope | 變數的Scope | No | page |
如果想要自己定義一種格式顯示的話,它也給我們提供了一些轉義的屬性:
Symbol | Description |
0 | 表示一個數字 |
E | 表示使用科學計數法 |
# | 表示一個數字,預設顯示0 |
. | 整數和小數的分隔符 |
, | 分組的分隔符 |
; | 分割不同的格式 |
- | 預設的負數符號 |
% | 乘以100後以百分比顯示 |
? | 乘以1000後以千分比顯示 |
¤ | 貨幣符號的佔位符 |
X | 表示任何其他的字元都可以用於字首和字尾 |
' | 在字首後字尾中引用特殊符號 |
Example:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <c:setvar="balance"value="120000.2309"/> <p>Formatted Number (1): <fmt:formatNumbervalue="${balance}"type="currency"/></p> <p>Formatted Number (2): <fmt:formatNumbertype="number"maxIntegerDigits="3"value="${balance}"/></p> <p>Formatted Number (3): <fmt:formatNumbertype="number"maxFractionDigits="3"value="${balance}"/></p> <p>Formatted Number (4): <fmt:formatNumbertype="number"groupingUsed="false"value="${balance}"/></p> <p>Formatted Number (5): <fmt:formatNumbertype="percent"maxIntegerDigits="3"value="${balance}"/></p> <p>Formatted Number (6): <fmt:formatNumbertype="percent"minFractionDigits="10"value="${balance}"/></p> <p>Formatted Number (7): <fmt:formatNumbertype="percent"maxIntegerDigits="3"value="${balance}"/></p> <p>Formatted Number (8): <fmt:formatNumbertype="number"pattern="###.###E0"value="${balance}"/></p> <p>Currency in USA : <fmt:setLocalevalue="en_US"/> <fmt:formatNumbervalue="${balance}"type="currency"/></p>
NUMBER FORMAT:
Formatted Number (1): £120,000.23 Formatted Number (2): 000.231 Formatted Number (3): 120,000.231 Formatted Number (4): 120000.231 Formatted Number (5): 023% Formatted Number (6): 12,000,023.0900000000% Formatted Number (7): 023% Formatted Number (8): 120E3 Currency in USA : $120,000.23 |
2. <fmt: parseNumber>
它用來解析數字、百分比、貨幣。包含以下屬性:
Attribute | Description | Required | Default |
value | 需要被解析的值 | No | Body |
type | NUMBER, CURRENCY, or PERCENT | No | number |
parseLocale | 解析時需要的區域設定 | No | Default locale |
integerOnly | 是否只解析整數 (true)或者浮點數(false) | No | false |
pattern | 自定義的格式 | No | None |
timeZone | 顯示日期的時區 | No | Default time zone |
var | 儲存解析完之後的值 | No | Print to page |
scope | var生存的Scope | No | page |
Example:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <c:setvar="balance"value="1250003.350"/> <fmt:parseNumbervar="i"type="number"value="${balance}"/> <p>Parsed Number (1) : <c:outvalue="${i}"/></p> <fmt:parseNumbervar="i"integerOnly="true"type="number"value="${balance}"/> <p>Parsed Number (2) : <c:outvalue="${i}"/></p>
NUMBER PARSING: Parsed Number (1) : 1250003.35 Parsed Number (2) : 1250003 |
3. <fmt: formatDate>
用來格式化日期和時間,它包含以下屬性:
Attribute | Description | Required | Default |
value | 需要格式化的值 | Yes | None |
type | DATE, TIME, or BOTH | No | date |
dateStyle | FULL, LONG, MEDIUM, SHORT, or DEFAULT | No | default |
timeStyle | FULL, LONG, MEDIUM, SHORT, or DEFAULT | No | default |
pattern | 自定義格式 | No | None |
timeZone | 顯示時間的時區 | No | Default time zone |
var | 儲存格式化後的值的變數 | No | Print to page |
scope | 變數的Scope | No | page |
下面是一些可以用在自定義格式時的轉義字元:
Code | Purpose | Sample |
G | 紀元標記 | AD |
y | 年 | 2002 |
M | 月 | April & 04 |
d | 日 | 20 |
h | 時(12小時制) | 12 |
H | 時(24小時制) | 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 | The hour(12-hour time) | 24 |
K | The hour(24-hour time) | 0 |
z | The time zone | Central Standard Time |
' | The escape for text | |
'' | The single quote |
Example:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <c:set var="now" value="<%=new java.util.Date()%>" /> <p>Formatted Date (1): <fmt:formatDatetype="time"value="${now}"/></p> <p>Formatted Date (2): <fmt:formatDatetype="date"value="${now}"/></p> <p>Formatted Date (3): <fmt:formatDatetype="both"value="${now}"/></p> <p>Formatted Date (4): <fmt:formatDatetype="both"dateStyle="short"timeStyle="short"value="${now}"/></p> <p>Formatted Date (5): <fmt:formatDatetype="both"dateStyle="medium"timeStyle="medium"value="${now}"/></p> <p>Formatted Date (6): <fmt:formatDatetype="both"dateStyle="long"timeStyle="long"value="${now}"/></p> <p>Formatted Date (7): <fmt:formatDatepattern="yyyy-MM-dd"value="${now}"/></p>
DATE FORMAT: Formatted Date (1): 14:27:18 Formatted Date (2): 23-Sep-2010 Formatted Date (3): 23-Sep-2010 14:27:18 Formatted Date (4): 23/09/10 14:27 Formatted Date (5): 23-Sep-2010 14:27:18 Formatted Date (6): 23 September 2010 14:27:18 GST Formatted Date (7): 2010-09-23 |
4. <fmt: parseDate>
用來解析日期,它包含以下屬性:
Attribute | Description | Required | Default |
value | 需要解析的日期 | No | Body |
type | DATE, TIME, or BOTH | No | date |
dateStyle | FULL, LONG, MEDIUM, SHORT, or DEFAULT | No | Default |
timeStyle | FULL, LONG, MEDIUM, SHORT, or DEFAULT | No | Default |
parseLocale | 解析日期時用的區域設定 | No | Default locale |
pattern | 自定義格式 | No | None |
timeZone | Time zone of the parsed date | No | Default time zone |
var | 儲存解析後的值的變數 | No | Print to page |
scope | 變數的Scope | No | page |
Example:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <c:setvar="now"value="20-10-2010"/> <fmt:parseDatevalue="${now}"var="parsedEmpDate"pattern="dd-MM-yyyy"/> <p>Parsed Date: <c:outvalue="${parsedEmpDate}"/></p>
DATE PARSING: Parsed Date: Wed Oct 20 00:00:00 GST 2010 |
還有一些其他的tag,以前沒用用過,也沒看見別人用過。還是列在下面:
Tag | Description |
…… | …… |
<fmt:bundle> | Loads a resource bundle to be used by its tag body. |
<fmt:setLocale> | Stores the given locale in the locale configuration variable. |
<fmt:setBundle> | Loads a resource bundle and stores it in the named scoped variable or the bundle configuration variable. |
<fmt:timeZone> | Specifies the time zone for any time formatting or parsing actions nested in its body. |
<fmt:setTimeZone> | Stores the given time zone in the time zone configuration variable |
<fmt:message> | To display an internationalized message. |
<fmt:requestEncoding> | Sets the request character encoding. |
文中的例子例子:http://www.tutorialspoint.com/jsp/jsp_standard_tag_library.htm