在寫這篇文章之前,看見了一個寫的非常詳細的博客,基本上是把書上的東西一字不落的復制在了博客上,看起來很方便。地址:http://blog.sina.com.cn/s/blog_4f925fc30101820w.html
不過,我還是喜歡自己總結一下。 I18N格式標簽庫:I18N-capable formation tags library.它可以根據發出請求的客戶端地域的不同來顯示不同的語言。同時還提供了格式化數據和日期的方法。引入該標簽庫的方法為:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
I18N格式標簽庫提供了11個標簽,這些 標簽從功能上可以划分為3類如下:
1)數字日期格式化。formatNumber標簽、formatData標簽、parseNumber標簽、parseDate標簽、timeZone標簽、setTimeZone標簽。
2)讀取消息資源。bundle標簽、message標簽、setBundle標簽。
3)國際化。setlocale標簽、requestEncoding標簽。
1.<frm:formatNumber/>標簽
該標簽依據特定的區域將數字改變為不同的格式來顯示。
【語法】:
<frm:formatNumber value=”被格式化的數據”[type=”number|currency|percent”]
[pattern=”pattern”]
[currencyCode=”code”]
[currencySymbol=”symbol”]
[groupingUsed=”true|false”]
[maxIntergerDigits=”maxDigits”]
[minIntergerDigits=”minDigits”]
[maxFractionDigits=”maxDigits”]
[minFractionDigits=”minDigits”]
[var=”name”]
[scope=page|request|session|application]
/>

其中,Type屬性的類型見下表:

舉個例子:
View Code
1 <%@ page language="java" pageEncoding="gbk"%>
2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
3 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
4 <html>
5 <head>
6 <title>I18N標簽庫</title>
7 </head>
8 <body>
9 <h4 align="center">
10 <c:out value="<frm:number>標簽的使用"></c:out>
11 </h4>
12 <hr>
13 <table border=1 cellpadding="0" cellspacing="0" align="center">
14 <tr align="center">
15 <td width="100">
16 類型
17 </td>
18 <td width="100">
19 使用數據
20 </td>
21 <td width="100">
22 結果
23 </td>
24 <td width="300">
25 說明
26 </td>
27 </tr>
28 <tr>
29 <td>
30 數字格式化
31 </td>
32 <td>
33 108.75
34 </td>
35 <td>
36 <fmt:formatNumber type="number" pattern="###.#">108.75</fmt:formatNumber>
37 </td>
38 <td>
39 使用pattern可以定義顯示的樣式。本例設定為###.#小數部分將使用四舍五入法。
40 </td>
41 </tr>
42 <tr>
43 <td>
44 數字格式化
45 </td>
46 <td>
47 9557
48 </td>
49 <td>
50 <fmt:formatNumber type="number" pattern="#.####E0">9557</fmt:formatNumber>
51 </td>
52 <td>
53 使用科學計數法。
54 </td>
55 </tr>
56 <tr>
57 <td>
58 數字格式化
59 </td>
60 <td>
61 9557
62 </td>
63 <td>
64 <fmt:formatNumber type="number">9557</fmt:formatNumber>
65 </td>
66 </td>
67 <td>
68 使用默認分組。
69 </td>
70 </tr>
71 <tr>
72 <td>
73 數字格式化
74 </td>
75 <td>
76 9557
77 </td>
78 <td>
79 <fmt:formatNumber type="number" groupingUsed="false">9557</fmt:formatNumber>
80 </td>
81 <td>
82 不使用分組。
83 </td>
84 </tr>
85 <tr>
86 <td>
87 數字格式化
88 </td>
89 <td>
90 9557
91 </td>
92 <td>
93 <fmt:formatNumber type="number" maxIntegerDigits="3">9557</fmt:formatNumber>
94 </td>
95 <td>
96 使用位數限定,根據指定的位數顯示,其他數字忽略。例如:9不被顯示。
97 </td>
98 </tr>
99 <tr>
100 <td>
101 百分比格式化
102 </td>
103 <td>
104 0.98
105 </td>
106 <td>
107 <fmt:formatNumber type="percent">0.98</fmt:formatNumber>
108 </td>
109 <td>
110 用百分比形式顯示一個數據。
111 </td>
112 </tr>
113 <tr>
114 <td>
115 貨幣格式化
116 </td>
117 <td>
118 188.88
119 </td>
120 <td>
121 <fmt:formatNumber type="currency">188.8</fmt:formatNumber>
122 </td>
123 <td>
124 將一個數據轉化為貨幣形式輸出。
125 </td>
126 </tr>
127 <tr>
128 <td>
129 存儲數據
130 </td>
131 <td>
132 188.88
133 </td>
134 <td>
135 <fmt:formatNumber type="currency" var="money">188.8</fmt:formatNumber>
136 <c:out value="${money}"></c:out>
137 </td>
138 <td>
139 存儲的money的值為${money}
140 </td>
141 </tr>
142 </table>
143 </body>
144 </html>
顯示結果如下:

2.<frm:parseNumber>標簽
將格式化后的數字、貨幣、百分比都轉化為數字類型。
【語法】:
<fmt:parseNumber value="number" [type=”number|currency|percent”]
[pattern=”pattern”]
[parseLocale=”locale”]
[intergerOnly=”true|false”]
[scope=”page|request|session|application”]
/>

舉個例子:
View Code
1 <%@ page language="java" pageEncoding="gbk"%>
2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
3 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
4 <html>
5 <head>
6 <title>I18N標簽庫</title>
7 </head>
8 <body>
9 <h4>
10 <c:out value="<frm:parseNumber>標簽的使用"></c:out>
11 </h4>
12 <hr>
13 </body>
14 <fmt:formatNumber type="currency" var="money">188.8</fmt:formatNumber>
15 <li>
16 格式化前的數據為:
17 <c:out value="${money}"></c:out>
18 <fmt:parseNumber var="money" type="currency">${money}</fmt:parseNumber>
19 <li>
20 格式化后的數據為:
21 <c:out value="${money}"></c:out>
22 <li>
23 可以對格式化的后的數據進行運算:
24 <c:out value="${money+200}"></c:out>
25 <li>
26 對百分比進行格式化98%為:
27 <fmt:parseNumber type="percent">98%</fmt:parseNumber>
28 </html>
顯示結果:

3.<fmt:formatDate>標簽
該標簽主要用來格式化日期和時間。
【語法】:
<fmt: formatDate value=”date” [type=”time|date|both”]
[pattern=”pattern”]
[dateStyle=”default|short|medium|long|full”]
[timeStyle=”default|short|medium|long|full”]
[timeZone=”timeZone”]
[var=”name”]
[scope=”page|request|session|application”]
/>

其中 type 屬性類型有:

舉個例子:
View Code
1 <%@ page language="java" pageEncoding="gbk"%>
2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
3 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
4 <jsp:useBean id="date" class="java.util.Date"></jsp:useBean>
5 <html>
6 <head>
7 <title>I18N標簽庫</title>
8 </head>
9 <body>
10 <fmt:formatDate value="${date}"></fmt:formatDate>
11 <br>
12 <fmt:formatDate value="${date}" type="both"></fmt:formatDate>
13 <br>
14 <fmt:formatDate value="${date}" type="both" dateStyle="default"
15 timeStyle="default"></fmt:formatDate>
16 <br>
17 <fmt:formatDate value="${date}" type="both" dateStyle="short"
18 timeStyle="short"></fmt:formatDate>
19 <br>
20 <fmt:formatDate value="${date}" type="both" dateStyle="long"
21 timeStyle="long"></fmt:formatDate>
22 <br>
23 <fmt:formatDate value="${date}" type="both" dateStyle="full"
24 timeStyle="full"></fmt:formatDate>
25 <br>
26 <fmt:formatDate value="${date}" type="both" dateStyle="full"
27 timeStyle="full"></fmt:formatDate>
28 <br>
29 </body>
30 </html>
顯示結果:

4.<fmt:parseDate>標簽
<fmt:parseDate>標簽主要將字符串類型的時間或日期轉化為時間或日期對象。
【語法】:
<fmt:parseDate value=”date” [type=”time|date|both”]
[pattern=”pattern”]
[parseLocale=”locale”]
[dateStyle=”default|short|medium|long|full”]
[timeStyle=”default|short|medium|long|full”]
[timeZone=”timezone”]
[var=”name”]
[scope=”page|request|session|application”]
/>

舉個例子:
View Code
1 <%@ page language="java" pageEncoding="gbk"%>
2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
3 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
4 <jsp:useBean id="date" class="java.util.Date"></jsp:useBean>
5 <html>
6 <head>
7 <title>I18N標簽庫</title>
8 </head>
9 <body>
10 <H4>
11 <c:out value="<frm:parseDate>標簽的使用"></c:out>
12 </H4>
13 <hr>
14 <fmt:formatDate value="${date}" var="a" type="both" dateStyle="full"
15 timeStyle="full"></fmt:formatDate>
16 <fmt:parseDate var="b" type="both" dateStyle="full" timeStyle="full">
17 ${a}
18 </fmt:parseDate>
19 <%
20 out.println(pageContext.getAttribute("b").toString());
21 out.println("<br>");
22 out.println(pageContext.getAttribute("b").hashCode());
23 %>
24 </body>
25 </html>
顯示結果:

5. <fmt:setTimeZone>標簽
該標簽用於設定默認時區,或者將時區存儲在指定的JSP范圍內。
【語法】
<fmt:setTimeZone value="value" [var="name"] [scope="page|request|session|application"]/>
舉個例子:
<fmt:setTimeZone value="EST" scope="session"> 中國使用的時區為CST。有關TimeZone的說明在JDK幫助文檔的 java.util.TimeZone 類。
6. <fmt:timeZone>標簽
該標簽主要用於設置標簽體內使用的時區。
【語法】
<fmt:timeZone value="timeZone">
……
</fmt:timeZone>
該標簽只會應用到標簽體內使用的時區,為標簽外部不產生影響。
