JSTL Tag學習筆記(二)之<fmt: />

pengisgood發表於2013-11-05

     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

 

 

 

 

 

相關文章