1. 國際化核心標簽:<fmt:setLocale>、<fmt:bundle>、<fmt:setBundle>、<fmt:message>、<fmt:param>、<fmt:requestEncoding>。?
2.?格式化標簽:<fmt:timeZone>、<fmt:setTimeZone>、<fmt:formatNumber>、<fmt:parseNumber>、<fmt:formatDate>、<fmt:parseDate>。
下面只選擇其中常見的一些標簽和屬性進行介紹。
9.5.1?用于設置本地化環境的<fmt:setLocale>標簽
<fmt:setLocale>標簽用于設置Locale環境。它的屬性和描述如表9.17所示:
表9.17 <fmt:setLocale>標簽屬性和說明
屬性 | 描述 |
value | Locale環境的指定,可以是java.util.Locale或String類型的實例 |
scope | Locale環境變量的作用范圍(可選) |
下面看一個示例:
<fmt:setLocale value="zh_TW"/>
表示設置本地環境為繁體中文。
9.5.2?用于資源文件綁定的<fmt:bundle>、<fmt:setBundle>標簽
這兩組標簽用于資源配置文件的綁定,唯一不同的是<fmt:bundle>標簽將資源配置文件綁定于它標簽體中的顯示,<fmt:setBundle>標簽則允許將資源配置文件保存為一個變量,在之后的
根據Locale環境的不同將查找不同后綴的資源配置文件,這點在國際化的任何技術上都是一致的,通常來說,這兩種標簽單獨使用是沒有意義的,它們都會與I18N formatting標簽庫中的其他標簽配合使用。它們的屬性和描述如表9.18所示:
表9.18 <fmt:bundle>、<fmt:setBundle>標簽屬性和說明
屬性 | 描述 |
basename | 資源配置文件的指定,只需要指定文件名而無須擴展名,二組標簽共有的屬性 |
var | <fmt:setBundle>獨有的屬性,用于保存資源配置文件為一個變量 |
scope | 變量的作用范圍 |
下面看一個示例
<fmt:setLocale value="zh_CN"/>
<fmt:setBundle basename="applicationMessage" var="applicationBundle"/>
該示例將會查找一個名為applicationMessage_zh_CN.properties的資源配置文件,來作為顯示的Resource綁定。
9.5.3?用于顯示資源配置文件信息的<fmt:message>標簽
用于信息顯示的標簽,將顯示資源配置文件中定義的信息。它的屬性和描述如表9.19所示:
表9.19 <fmt:message>標簽屬性和說明
屬性 | 描述 |
key | 資源配置文件的“鍵”指定 |
bundle | 若使用<fmt:setBundle>保存了資源配置文件,該屬性就可以從保存的資源配置文件中進行查找 |
var | 將顯示信息保存為一個變量 |
scope | 變量的作用范圍 |
下面看一個示例:
<fmt:setBundle basename="applicationMessage" var="applicationBundle"/>
<fmt:bundle basename="applicationAllMessage">
???????? <fmt:message key="userName" />
???????? <p>
???????? <fmt:message key="passWord" bundle="${applicationBundle}" />
</fmt:bundle>
該示例使用了兩種資源配置文件的綁定的做法,“applicationMessage”資源配置文件利用<fmt:setBundle>標簽被賦于了變量“applicationBundle”,而作為<fmt:bundle>標簽定義的“applicationAllMessage”資源配置文件作用于其標簽體內的顯示。
q???????? 第一個<fmt:message>標簽將使用“applicationAllMessage”資源配置文件中“鍵”為“userName”的信息顯示。
q???????? 第二個<fmt:message>標簽雖然被定義在<fmt:bundle>標簽體內,但是它使用了bundle屬性,因此將指定之前由<fmt:setBundle>標簽保存的“applicationMessage”資源配置文件,該“鍵”為“passWord”的信息顯示。
9.5.4?用于參數傳遞的<fmt:param>標簽
<fmt:param>標簽應該位于<fmt:message>標簽內,將為該消息標簽提供參數值。它只有一個屬性value。
<fmt:param>標簽有兩種使用版本,一種是直接將參數值寫在value屬性中,另一種是將參數值寫在標簽體內。
9.5.6?用于為請求設置字符編碼的<fmt:requestEncoding>標簽
<fmt:requestEncoding>標簽用于為請求設置字符編碼。它只有一個屬性value,在該屬性中可以定義字符編碼。
9.5.7?用于設定時區的<fmt:timeZone>、<fmt:setTimeZone>標簽
這兩組標簽都用于設定一個時區。唯一不同的是<fmt:timeZone>標簽將使得在其標簽體內的工作可以使用該時區設置,<fmt:setBundle>標簽則允許將時區設置保存為一個變量,在之后的工作可以根據該變量來進行。它們的屬性和描述如表9.20所示:
表9.20 <fmt:timeZone>、<fmt:setTimeZone>標簽屬性和說明
屬性 | 描述 |
value | 時區的設置 |
var | <fmt:setTimeZone>獨有的屬性,用于保存時區為一個變量 |
scope | 變量的作用范圍 |
9.5.8?用于格式化數字的<fmt:formatNumber>標簽
<fmt:formatNumber>標簽用于格式化數字。它的屬性和描述如表9.21所示:
表9.21 <fmt:formatNumber>標簽屬性和說明
屬性 | 描述 |
value | 格式化的數字,該數值可以是String類型或java.lang.Number類型的實例 |
type | 格式化的類型 |
pattern | 格式化模式 |
var | 結果保存變量 |
scope | 變量的作用范圍 |
maxIntegerDigits | 指定格式化結果的最大值 |
minIntegerDigits | 指定格式化結果的最小值 |
maxFractionDigits | 指定格式化結果的最大值,帶小數 |
minFractionDigits | 指定格式化結果的最小值,帶小數 |
<fmt:formatNumber>標簽實際是對應java.util.NumberFormat類,type屬性的可能值包括currency(貨幣)、number(數字)和percent(百分比)。
下面看一個示例。
<fmt:formatNumber value="1000.888" type="currency" var="money"/>
9.5.9?用于解析數字的<fmt:parseNumber>標簽
<fmt:parseNumber>標簽用于解析一個數字,并將結果作為java.lang.Number類的實例返回。<fmt:parseNumber>標簽看起來和<fmt:formatNumber>標簽的作用正好相反。它的屬性和描述如表9.22所示:
表9.22 <fmt:parseNumber>標簽屬性和說明
屬性 | 描述 |
value | 將被解析的字符串 |
type | 解析格式化的類型 |
pattern | 解析格式化模式 |
var | 結果保存變量,類型為java.lang.Number |
scope | 變量的作用范圍 |
parseLocale | 以本地化的形式來解析字符串,該屬性的內容應為String或java.util.Locale類型的實例 |
下面看一個示例。
<fmt:parseNumber value="15%" type="percent" var="num"/>
解析之后的結果為“0.15”。
9.5.10?用于格式化日期的<fmt:formatDate>標簽
<fmt:formatDate>標簽用于格式化日期。它的屬性和描述如表9.23所示:
表9.23 <fmt:formatDate>標簽屬性和說明
屬性 | 描述 |
value | 格式化的日期,該屬性的內容應該是java.util.Date類型的實例 |
type | 格式化的類型 |
pattern | 格式化模式 |
var | 結果保存變量 |
scope | 變量的作用范圍 |
timeZone | 指定格式化日期的時區 |
<fmt:formatDate>標簽與<fmt:timeZone>、<fmt:setTimeZone>兩組標簽的關系密切。若沒有指定timeZone屬性,也可以通過<fmt:timeZone>、<fmt:setTimeZone>兩組標簽設定的時區來格式化最后的結果。
9.5.11?用于解析日期的<fmt:parseDate>標簽
<fmt:parseDate>標簽用于解析一個日期,并將結果作為java.lang.Date類型的實例返回。<fmt:parseDate>標簽看起來和<fmt:formatDate>標簽的作用正好相反。它的屬性和描述如表9.24所示:
表9.24 <fmt:parseDate>標簽屬性和說明
屬性 | 描述 |
value | 將被解析的字符串 |
type | 解析格式化的類型 |
pattern | 解析格式化模式 |
var | 結果保存變量,類型為java.lang.Date |
scope | 變量的作用范圍 |
parseLocale | 以本地化的形式來解析字符串,該屬性的內容為String或java.util.Locale類型的實例 |
timeZone | 指定解析格式化日期的時區 |
<fmt:parseNumber>和<fmt:parseDate>兩組標簽都實現解析字符串為一個具體對象實例的工作,因此,這兩組解析標簽對var屬性的字符串參數要求非常嚴格。就JSP頁面的表示層前段來說,處理這種解析本不屬于份內之事,因此<fmt:parseNumber>和<fmt:parseDate>兩組標簽應該盡量少用,替代工作的地方應該在服務器端表示層的后段,比如在Servlet中。