posts - 75,comments - 83,trackbacks - 0
          看到 I18N 就應該想到知識“國際化”, I18N formatting 標簽庫就是用于在 JSP 頁面中做國際化的動作。在該標簽庫中的標簽一共有 12 個,被分為了兩類,分別是:
          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.LocaleString類型的實例

          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"/>

          該結果將被保存在“money”變量中,將根據Locale環境顯示當地的貨幣格式。

          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

          以本地化的形式來解析字符串,該屬性的內容應為Stringjava.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

          以本地化的形式來解析字符串,該屬性的內容為Stringjava.util.Locale類型的實例

          timeZone

          指定解析格式化日期的時區

          <fmt:parseNumber><fmt:parseDate>兩組標簽都實現解析字符串為一個具體對象實例的工作,因此,這兩組解析標簽對var屬性的字符串參數要求非常嚴格。就JSP頁面的表示層前段來說,處理這種解析本不屬于份內之事,因此<fmt:parseNumber><fmt:parseDate>兩組標簽應該盡量少用,替代工作的地方應該在服務器端表示層的后段,比如在Servlet中。

          posted on 2008-04-17 20:15 梓楓 閱讀(442) 評論(0)  編輯  收藏 所屬分類: jstl標簽類

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 镇坪县| 青龙| 外汇| 奉节县| 韩城市| 稷山县| 阿荣旗| 肥乡县| 谢通门县| 兰州市| 舞钢市| 东宁县| 仁布县| 凯里市| 崇明县| 彭阳县| 苍山县| 阳西县| 本溪市| 竹山县| 砚山县| 灵璧县| 隆安县| 德令哈市| 武强县| 富阳市| 团风县| 美姑县| 定日县| 司法| 元氏县| 通化市| 密云县| 阿克苏市| 和静县| 勐海县| 石屏县| 怀化市| 龙游县| 涿州市| 龙门县|