jsp fmt标签详解
詳見:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt326
JSTL標簽提供了對國際化(I18N)的支持,它可以根據(jù)發(fā)出請求的客戶端地域的不同來顯示不同的語言。同時還提供了格式化數(shù)據(jù)和日期的方法。實現(xiàn)這些功能需要I18N格式標簽庫(I18N-capable?formation?tags?liberary)。引入該標簽庫的方法為:
<%@?taglib?prefix="fmt"?uri="http://java.sun.com/jsp/jstl/fmt"?%>
I18N格式標簽庫提供了11個標簽,這些?標簽從功能上可以劃分為3類如下:
(1)數(shù)字日期格式化。formatNumber標簽、formatData標簽、parseNumber標簽、parseDate標簽、timeZone標簽、setTimeZone標簽。
(2)讀取消息資源。bundle標簽、message標簽、setBundle標簽。
(3)國際化。setlocale標簽、requestEncoding標簽。
接下將詳細介紹這些標簽的功能和使用方式。
9.3.1?數(shù)字日期格式化
數(shù)字日期格式化標簽共有6個,用來將數(shù)字或日期轉換成設定的格式。
1.<frm:formatNumber/>標簽
該標簽依據(jù)特定的區(qū)域將數(shù)字改變?yōu)椴煌母袷絹盹@示。
【語法1】:
<frm:formatNumber?value=”被格式化的數(shù)據(jù)”[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]
/>
【語法2】:?
<frm:formatNumber?[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]
>?
<fmt:formatNumber>標簽參數(shù)說明:
| 名稱 | 說明 | EL | 類型 | 必須 | 默認值 |
| value | 要格式化的數(shù)據(jù) | 是 | String | 是 | 無 |
| type | 指定類型(單位、貨幣、百分比等)見表 | 是 | String | 否 | number |
| pattern | 格式化的數(shù)據(jù)樣式 | 是 | String | 否 | 無 |
| currencyCode | 貨幣單位代碼 | 是 | String | 否 | 無 |
| cuttencySymbol | 貨幣符號($、¥) | 是 | String | 否 | 無 |
| groupingUsed | 是否對整數(shù)部分進行分組如(9,999) | 是 | boolean | 是 | true |
| maxIntergerDigits | 整數(shù)部分最對顯示多少位數(shù) | 是 | int | 否 | 無 |
| minIntergerDigits | 整數(shù)部分最少顯示多少位 | 是 | int | 否 | 無 |
| maxFractionDigits | 小數(shù)部分最多顯示多少位 | 是 | int | 否 | 無 |
| minFractionDigits | 小數(shù)部分最少顯示多少位 | 是 | int | 否 | 無 |
| var | 存儲格式化后的數(shù)據(jù) | 否 | String | 否 | 無 |
| scope | var的JSP范圍 | 否 | String | 否 | page |
Type屬性的類型應用:.
| 類型 | 說明 | 示例 |
| number | 數(shù)字格式 | 0.8 |
| currency | 當?shù)刎泿?/p> | ¥0.80 |
| percent | 百分比格式 | 80% |
【示例代碼】:實現(xiàn)了對數(shù)字的格式化、貨幣的格式、貨幣的格式化。使用<frm:formatNumber>的各種屬性的設定。
<table?border=1?cellpadding="0"?cellspacing="0"?align="center">
?<tr?align="center">
<td?width="100">類型?</td>
<td?width="100">使用數(shù)據(jù)</td>
<td?width="100">結果</td>
<td?width="300">說明</td>
?</tr>
?<tr>
?<td>數(shù)字格式化</td><td>108.75</td>
?<td><fmt:formatNumber?type="number"?pattern="###.#">108.75</fmt:formatNumber></td>
?<td>使用pattern可以定義顯示的樣式。本例設定為###.#小數(shù)部分將使用四舍五入法。</td>
?</tr>
?<tr>
?<td>數(shù)字格式化</td><td>9557</td>
?<td><fmt:formatNumber?type="number"?pattern="#.####E0">9557</fmt:formatNumber></td>
?<td>使用科學計數(shù)法。</td>?
?</tr>
?<tr>
?<td>數(shù)字格式化</td><td>9557</td>
?<td><fmt:formatNumber?type="number"?>9557</fmt:formatNumber></td>
?</td>
?<td>使用默認分組。</td>
?</tr>
?<tr>
?<td>數(shù)字格式化</td><td>9557</td>
?<td><fmt:formatNumber?type="number"?groupingUsed="false"?>9557</fmt:formatNumber></td>
?<td>不使用分組。</td>
?</tr>
?<tr>
?<td>數(shù)字格式化</td><td>9557</td>
?<td><fmt:formatNumber?type="number"?maxIntegerDigits="3">9557</fmt:formatNumber></td>
?<td>使用位數(shù)限定,根據(jù)指定的位數(shù)顯示,其他數(shù)字忽略。例如:9不被顯示。</td>
?</tr>
?<tr>
?<td>百分比格式化</td><td>0.98</td>
?<td><fmt:formatNumber?type="percent">0.98</fmt:formatNumber></td>
?<td>用百分比形式顯示一個數(shù)據(jù)。</td>
?</tr>
?<tr>
?<td>貨幣格式化</td><td>188.88</td>
?<td><fmt:formatNumber?type="currency"?>188.8</fmt:formatNumber></td>
<td>將一個數(shù)據(jù)轉化為貨幣形式輸出。</td>
?</tr>
?<tr>
?<td>存儲數(shù)據(jù)</td><td>188.88</td>
?<td><fmt:formatNumber?type="currency"?var="money">188.8</fmt:formatNumber>
?<c:out?value="${money}"></c:out>
?</td>
?<td>存儲的money的值為${money}?</td>
?</tr>
?</table>
?【代碼說明】:
(1)從應用角度可以把屬性分為三類:數(shù)字格式化、貨幣格式化、百分比格式化。使用type指定類型。
(2)應用于數(shù)字格式化的屬性有:partten屬性、maxIntegerDigits屬性、minIntegerDigits屬性、maxFractionDigits屬性和minFactionDigits屬性。其中partten屬性在設定格式化樣式時會比較準確如:四舍五入、科學計數(shù)法的使用。而使用maIntegerDirgits等屬性時,只把設定位數(shù)以外的數(shù)字舍去。
(3)貨幣格式化可以使用數(shù)字格式化的所有屬性。如果有必要建議使用partten屬性。currencyCode屬性和currencySymbol只用于貨幣格式化。
(4)百分比格式化使用到的屬性為type屬性、partten屬性,設定type屬性的類型為percent即可。
(5)使用var屬性時,會將格式化后的值存在JSP的某個范圍內(nèi)(一個String類型的字符串包括符號等)。<frm:forNumber>將不再輸出格式化后的值可以使用EL表達式輸出。
(6)通用屬性:type屬性、partten屬性、var屬性和scope屬性。
2.<frm:parseNumber>標簽
將格式化后的數(shù)字、貨幣、百分比都轉化為數(shù)字類型。
【語法1】:
<fmt:parseNumber?value="number"?[type=”number|currency|percent”]
????????????????????????????????????????????????????????[pattern=”pattern”]
????????????????????????????????????????????????????????[parseLocale=”locale”]???????????????????????
????????????????????????????????????????????????????????[intergerOnly=”true|false”]
????????????????????????????????????????????????????????[scope=”page|request|session|application”]
/>
【語法2】:
<fmt:parseNumber?[type=”number|currency|percent”]
????????????????????????????????????????????????????????[pattern=”pattern”]
????????????????????????????????????????????????????????[parseLocale=”locale”]
????????????????????????????????????????????????????????[intergerOnly=”true|false”]
????????????????????????????????????????????????????????[scope=”page|request|session|application”]
>?
Number
</fmt:parseNumber>
<fmt:parseNumber>標簽參數(shù)說明:
| 名稱 | 說明 | EL | 類型 | 是否必須 | 默認值 |
| value | 被解析的字符串 | 是 | String | 是 | 無 |
| type | 指定單位(數(shù)字、貨幣、百分比) | 是 | String | 是 | number |
| pattern | 格式樣式 | 是 | String | 否 | 無 |
| parseLocale | 用來替代默認區(qū)域的設定 | 是 | String, Java.util. Locale | 是 | 默認本地樣式 |
| var | 存儲已經(jīng)格式化的數(shù)據(jù) | 否 | String | 否 | 無 |
| scope | var變量的作用域 | 否 | String | 是 | page |
<fmt:parseNumber>可以看作是<fmt:formatNumber>的逆運算。相應的參數(shù)和類型的配置和使用<fmt:formatNumber>格式化時相同。
【示例代碼】:實現(xiàn)了從字符串中提取數(shù)據(jù),并用合適的數(shù)據(jù)類型進行存儲(浮點性、整型等)。可以對轉換后的數(shù)據(jù)進行加法運算。
?<fmt:formatNumber?type="currency"?var="money">188.8</fmt:formatNumber>
?<li>格式化前的數(shù)據(jù)為:<c:out?value="${money}"></c:out>
?<fmt:parseNumber?var="money"?type="currency">${money}</fmt:parseNumber>
?<li>格式化后的數(shù)據(jù)為:<c:out?value="${money}"></c:out>
?<li>可以對格式化的后的數(shù)據(jù)進行運算:?
?<c:out?value="${money+200}"></c:out>
?<li>對百分比進行格式化98%為:
?<fmt:parseNumber?type="percent">98%</fmt:parseNumber>
【代碼解析】:
(1)首先使用<fmt:formatNumber>將188.8轉換為字符串¥188.8并在page范圍內(nèi)存儲一個String類型的變量,變量名為money。
(2)使用<fmt:parseNumber>將¥188.8轉化為浮點型的數(shù)據(jù)188.8并賦值為變量money,
則變量money轉變?yōu)橐粋€浮點型的值188.8,對188.8進行加運算。
(3)直接對一個百分比數(shù)98%進行轉化。
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”]
/>
<fmt:formatDate>標簽屬性說明:
| 屬性名 | 說明 | EL | 類型 | 必須 | 默認值 |
| value | 將要格式化的日期對象。 | 是 | Java.util.Date | 是 | 無 |
| type | 顯示的部分(日期、時間或者兩者)。 | 是 | String | 否 | date |
| partten | 格式化的樣式。 | 是 | String | 否 | 無 |
| dateStyle | 設定日期的顯示方式。 | 是 | String | 否 | default |
| timeStyle | 設定時間的顯示方式。 | 是 | String | 否 | default |
| timeZone | 設定使用的時區(qū)。 | 是 | String | 否 | 當?shù)厮脮r區(qū) |
| var | 存儲已格式化的日期或時間。 | 否 | String | 否 | 無 |
| scope | 指定var存儲的JSP范圍。 | 否 | String | 否 | 無 |
type屬性參數(shù)說明:
| 參數(shù)名 | 說明 |
| time | 只顯示時間 |
| date | 只顯示時期 |
| both | 顯示日期和時間 |
【示例程序】:實現(xiàn)了對日期的格式化,使用了type、dateStyle、timeStyle等屬性。
<fmt:formatDate?value="${date}"></fmt:formatDate><br>
<fmt:formatDate?value="${date}"?type="both"></fmt:formatDate><br>
<fmt:formatDate?value="${date}"?type="both"?dateStyle="default"
?timeStyle="default"></fmt:formatDate><br>
???<fmt:formatDate?value="${date}"?type="both"?dateStyle="short"
?timeStyle="short"></fmt:formatDate><br>
???<fmt:formatDate?value="${date}"?type="both"?dateStyle="long"
?timeStyle="long"></fmt:formatDate><br>
???<fmt:formatDate?value="${date}"?type="both"?dateStyle="full"
timeStyle="full"></fmt:formatDate><br>
???<fmt:formatDate?value="${date}"?type="both"?dateStyle="full"
timeStyle="full"></fmt:formatDate><br>
???
【代碼解析】:
(1)首先通過配置JavaBean在頁面上實例化java.util.Date對象。實現(xiàn)代碼如下:
<jsp:useBean?id="date"?class="java.util.Date"></jsp:useBean>
(2)對日期對象進行格式化時${date}是一個日期對象,如果給value設的值為String時程序會報錯。
(3)設置type為both時,將顯示日期和時間,同時示例中依次改變dateStyle和timeStyle的值作為比較。
4.<fmt:parseDate>標簽
<fmt:parseDate>標簽主要將字符串類型的時間或日期轉化為時間或日期對象。
【語法1】:
<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”]
/>
【語法2】:
<fmt:parseDate?[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”]
>?
Date
</fmt:parseDate>
<fmt:parseData>標簽屬性說明:
| 屬性名 | 說明 | EL | 類型 | 必須 | 默認值 |
| value | 將要格式化的日期時間 | 是 | String | 是 | 無 |
| type | 字符串的類型(日期、時間或全部) | EL | String | 是 | date |
| pattern | 字符串使用的時間樣式 | 是 | String | 是 | 無 |
| parseLocale | 取代默認地區(qū)設定 | 是 | String | 是 | 默認地區(qū) |
| dateStyle | 字符串使用的日期顯示方式 | 是 | String | 否 | default |
| timeStyle | 字符串使用的時間顯示格式 | 是 | String | 否 | default |
| timeZone | 使用的時區(qū) | 是 | String | 否 | 當?shù)貐^(qū)時 |
| var | 使用var定義的名字保存對象 | 否 | String | 否 | 無 |
| scope | var的JSP范圍 | 否 | String | 否 | page |
【示例代碼】:實現(xiàn)了以下功能:首先,使用了<fmt:formatDate>把一個日期對象格式化成一個日期的字符串,并把該字符串以參數(shù)名為a存儲page范圍內(nèi)。其次,使用<fmt:parseDate>方法把a的值(字符串)格式化成一個Date并以參數(shù)名為b存儲在page范圍內(nèi)。最后,使用Java腳本證明生成的b為對象。
<fmt:formatDate?value="${date}"?var="a"?type="both"
dateStyle="full"?timeStyle="full"></fmt:formatDate>
<fmt:parseDate?var="b"?type="both"?dateStyle="full"?timeStyle="full">
${a}
</fmt:parseDate>
???<%
???out.println(pageContext.getAttribute("b").toString());
???out.println("<br>");
???out.println(pageContext.getAttribute("b").hashCode());
???%>
???</body>
</html>
【代碼解析】:
(1)使用<fmt:formatDate>把日期對象格式化成字符串。
(2)使用<fmt:parseDate>把字符串對象轉化為日期對象,注意同(1)中的參數(shù)對比,可以發(fā)現(xiàn)兩者是一個互逆的過程。
(3)使用Java腳本進行測試Date對象的toString()方法可以輸出時間字符串。hashCode()可以得到一個對象的hashCode。該方法只能應用于對象,因此可以證明得到的是一個日期對象。
5.<fmt:setTimeZone>標簽
該標簽用于設定默認時區(qū)或者將時區(qū)存儲在指定的JSP范圍內(nèi)。
【語法】:
<fmt:setTimeZone?value=”value”?[var=”name”][scope=”page|request|session|application”]/>
<fmt:setTimeZone>標簽屬性說明:
| 參數(shù)名 | 說明 | EL | 類型 | 必須 | 默認值 |
| value | 使用的時區(qū) | 是 | String Java.util.TimeZone | 是 | 無 |
| var | 使用var定義的參數(shù)名保存值 | 否 | String | 否 | 無 |
| scope | 存儲var的JSP范圍 | 否 | String | 否 | page |
value用來設定使用的時區(qū),例如中國使用的時區(qū)為CST,其他的還有EST、PST等。可以把時區(qū)存儲在指定的JSP范圍內(nèi),例如存儲在session中,用戶訪問的所有頁面都可以顯示使用的設定的時區(qū)下對應的時間。
【示例代碼】
<fmt:setTimeZone?value=”EST”?scope=”session”/>
提示:有關TimeZone的說明見JDK幫助文檔的java.util.TimeZone類。
6.<fmt:timeZone>標簽
該標簽主要用于設置標簽體內(nèi)使用的時區(qū)。
【語法】:
<fmt:timeZone?value=”timeZone”>
…..
</fmt:timeZone>
使用<fmt:timeZone></fmt:timeZone>只會應用到標簽體內(nèi)使用的時區(qū),對標簽外部將不產(chǎn)生影響。
9.3.2?讀取消息資源
讀取消息資源用到的標簽主要有4個:<fmt:message>標簽、<fmt:param>標簽、<fmt:bundle>標簽和<fmt:setBundle>標簽。主要用于從資源文件中讀取信息。
1.<fmt:bundle>標簽
該標簽主要用于將資源文件綁定于它的標簽體中的顯示。
【語法】:
<fmt:bundle?basename=”name”[prefix=”prefix”]>
….標簽主題
</fmt:bundle>
<fmt:bundle>標簽屬性說明:
| 參數(shù)名 | 說明 | EL | 類型 | 必須 | 默認值 |
| basename | 指定使用的資源文件的名稱 | 是 | String | 是 | 無 |
| prefix | 前置關鍵字 | 是 | String | 否 | 無 |
2.<fmt:setBundle>標簽
該標簽主要用于綁定資源文件或者把資源文件保存在指定的JSP范圍內(nèi)。
【語法】:
<fmt:setBundle?basename=”name”?[var=”name”]
?????????????????????????????????????[scope=”page|request|session|application”]
>?
<fmt:setBundle>標簽屬性說明:
| 參數(shù)名 | 說明 | EL | 類型 | 必須 | 默認值 |
| basename | 指定使用的資源文件的名稱 | 是 | String | 是 | 無 |
| var | 指定將資源文件保存的名稱 | 否 | String | 否 | 無 |
| scope | 設定將資源文件保存的JSP范圍 | 否 | String | 否 | page |
3.<fmt:message>標簽
該標簽主要負責讀取本地資源文件,從指定的消息文本資源文件中讀取鍵值,并且可以將鍵值保存在指定的JSP范圍內(nèi)。
【語法1】:
<fmt:message?key=”keyName”[bundle=”bundle”]
?????????????????????????????????????[scope=”page|request|session|application”]
/>
【語法2】:
<fmt:message?key=”keyName”[bundle=”bundle”]
?????????????????????????????????????[scope=”page|request|session|application”]
>?
<fmt:param/>
</fmt:message>
【語法3】:
<fmt:message?key=”keyName”[bundle=”bundle”]
????????????????????????????????????????????????????????[scope=”page|request|session|application”]
>?
key<fmt:param/>
…
</fmt:message>
<fmt:message>標簽屬性說明:
| 參數(shù)名 | 說明 | EL | 類型 | 必須 | 默認值 |
| key | 指定鍵值的名稱(索引) | 是 | String | 是 | 無 |
| bundle | 指定消息文本的來源 | 是 | LocalizationContext | 否 | 無 |
| var | 指定存儲鍵值的變量名 | 否 | String | 否 | 無 |
| scope | 指定var的作用域 | 否 | String | 否 | page |
提示:建議此處的bundle使用EL表達式,因為屬性bundle的類型為LocalizationContext,而不是一個String類型的URL。
【示例代碼】:實現(xiàn)從指定的資源文件中讀取對應key的值。
首先編寫一個資源文件內(nèi)容下
name=olive
password=01234
使用標簽從資源文件中讀取相應的值。
???<fmt:bundle?basename="message">
???<c:out?value="從message資源文件中得到的key為name的值為:"></c:out>
???<fmt:message?key="name"?></fmt:message>
???</fmt:bundle>
???<hr>
???<fmt:setBundle?basename="message"?var="m"/>
???<fmt:message?key="password"?bundle="${m}"></fmt:message>
????${m}
????【代碼解析】:
(1)使用<fmt:bundle>標簽指定從message.properties文件中讀取值。
(2)使用<fmt:message>標簽讀取資源文件中key為name的值。<fmt:message>標簽放在<fmt:bundle>標簽體內(nèi)使用。
(3)使用<fmt:setBundle>標簽在page范圍綁定一個配置文件,以m為參數(shù)名存儲。
(4)使用<fmt:message>標簽得到key為password的值,此處指定資源文件的方式為使用<fmt:message>標簽的bundle屬性來設定。
(5)輸出參數(shù)m的值,加深對bundle的理解。
<fmt:bundle>標簽中有一個prefix屬性,該標簽用來指明前綴。例如配置文件內(nèi)容如下:
org.person.name=olive
org.personpassword=01234
如果不使用prefix標簽,在取值是要指明前綴。例如:
<fmt:bundle?basename=”message”>
<fmt:message?key=”org.person.name”></fmt:message>
<fmt:message?key=”org.person.password”></fmt:message>
</fmt:bundle>
使用prefix屬性可以簡化取值時的代碼。
<fmt:bundle?basename=”message”?prefix=”org.person”>
<fmt:message?key=”name”></fmt:message>
<fmt:message?key=”password”></fmt:message>
</fmt:bundle>
4.<fmt:param>標簽
該標簽主要用于當<fmt:message>中資源文件中獲得鍵值時,動態(tài)的為資源文件中的變量賦值。
【語法1】:
<fmt:param?value=”value”/>
【語法2】:
<fmt:param?>
…標簽主體
</fmt:param>
【示例代碼】:
(1)創(chuàng)建資源文件。在message.properties文件中增加一個key和value。
news={0}?welcome?to?out?website!<br>today?is?:{1,date}
表達的含義是鍵news對應的是一個字符串,字符串中還有動態(tài)變量{0}表示第一個動態(tài)變量,{1,date}表示第二個動態(tài)變量并且該變量是一個日期類型的對象。
(2)通過標簽從資源文件中取出鍵值,并給動態(tài)變量賦值顯示在頁面。
???<fmt:bundle?basename="message">
???<fmt:message?key="news">
???<fmt:param?value="olive"?/>
???<fmt:param?value="${date}"/>
???</fmt:message>
???</fmt:bundle>
??
【代碼解析】:
(1)使用<fmt:bundle>標簽把資源文件綁定在標簽體內(nèi)。
(2)在<fmt:bundle>標簽體內(nèi)使用<fmt:message>得到鍵值。
(3)使用<fmt:param>為資源文件中的動態(tài)變量賦值。
9.3.3?國際化
國際化這個分類中共包含兩個標簽:用于設定語言地區(qū)<fmt:setLocale/>和用于設定請求的字符編碼的<fmt:requestEncoding>標簽。
1.<fmt:setLocale/>標簽
<fmt:setLocale>標簽用來設定用戶語言區(qū)域。
【語法】:
<fmt:setLocale?value=”locale”[variant=”variant”]
????????????????????????????[scope=”page|request|session|application”]>
<fmt:setLocale>標簽屬性說明:
| 參數(shù)名 | 說明 | EL | 類型 | 必須 | 默認值 |
| value | 指定區(qū)域代碼 | 是 | String java.util.Locale | 是 | 無 |
| variant | 操作系統(tǒng)的類型 | 是 | String | 是 | 無 |
| scope | 設定時區(qū)的作用范圍 | 否 | String | 是 | page |
value屬性用來指定使用的語言代碼,可以從瀏覽器的【工具】---【Internet選項】---【語言】---【添加】中查看瀏覽器支持的語言種類及語言代碼。例如:中文(zh_cn)、臺灣(zh_tw)、香港(zh_mo)等。
【示例代碼】:實現(xiàn)了設定不同的區(qū)域代碼,根據(jù)不同的區(qū)域代碼瀏覽將顯示不同格式的日期。
???<fmt:setLocale?value="en_us"?/>
???<fmt:formatDate?value="${date}"?type="both"?dateStyle="full"?timeStyle="full"/>
???<hr>
???<fmt:setLocale?value="zh_cn"?/>
???<fmt:formatDate?value="${date}"?type="both"?dateStyle="full"?timeStyle="full"/>
???<hr>
???<fmt:setLocale?value="zh_TW"/>
???<fmt:formatDate?value="${date}"?type="both"?dateStyle="full"?timeStyle="full"/>
【代碼解析】:
(1)瀏覽器默認跟您使用的操作系統(tǒng)的語言相同,因此默認值zh_cn。使用<fmt:setLocale/>標簽設置使用的語言為en_us(英語)。使用<fmt:formateDate>格式化輸出的時間字符串,該標簽會根據(jù)不同的語言輸出不同的日期格式。
(2)使用的語言修改為zh_cn,再次用格式化輸出。
(3)使用語言修改為zh_TW,輸出格式化后的時間。
2.<fmt:requestEncoding>標簽
該標簽用于設定請求的編碼格式。功能同servletRequest.setCharacterEncoding()方法相同。
【語法】:
<fmt:requestEncoding?[value=”charEncoding”]/>
【參數(shù)說明】:
value屬性用來指定使用的編碼集例如:gbk、gb2312等。當沒有給出value的值時將會自動搜索取尋找合適的編碼方式,因此能夠很好的解決中文亂碼問題。
轉載于:https://www.cnblogs.com/grefr/p/6088570.html
總結
以上是生活随笔為你收集整理的jsp fmt标签详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用pt-heartbeat检测主从复制
- 下一篇: Bug调试(lldb)