一 動態文件的概念
1.什麼時候使用動態文本
如果字符串中包含了多個與國際化相關的數據,可以使用MessageFormat類對這些數據進行批量處理 ----比如一段字符串中包含時間、數字、貨幣、、可以進行批量處理
(1)MessageFormat類允許開發人員用佔位符替換掉字符串中的敏感數據(即國際化相關的數據)。
(2)MessageFormat類在格式化輸出包含佔位符的文本時,messageFormat類可以接收一個參數數組,以替換文本中的每一個佔位符。
(3)批量處理是把國際化的文件用佔位符代替,組成一個數組
二 動態文本的使用
1.在java中動態文本的使用
(1)把字符串改爲(模式字符串)佔位符
At 12:30 pm on jul 3,1998, a hurricance destroyed 99 houses and caused $1000000 of damage
代替爲:
模式字符串:
pattern =At [0], a hurricance destroyed [1] houses and caused [2] of damage
(2)設置動態文本的模型,並指明顯示的國家,可以值確定模式,默認的國家的當地的
MessageFormat mf = new MessageFormat(pattern, Locale.US);
(3)創建數組爲模式字符串賦值(爲佔位符賦值)
Object[] objs = { new Date(), new Integer(99), new Double(1e7)};
(4)格式轉換並輸出
String result = mf.format(objs);
System.out.println(result);
注:按以上的說法,只是固定的把它寫到了java文件中,可以把模式字符串部署到資源組中
2.在jsp頁面中動態文本的運用----標籤的使用
(1)創建資源包對象,並存在bundle對象中
<fmt:setBundle basename="com.hbsi.resource.MyResource" var="bundle" scope="request"/>
(2)讀取並輸出
<fmt:message key="title" bundle="${bundle}">
<!-- 爲佔位符賦值 ----------- 批量處理-->
<fmt:param value="${date}" ></fmt:param>
<fmt:param value="${number1}"></fmt:param>
<fmt:param value="${number2}"></fmt:param>
</fmt:message>
注:如果在<fmt:message>標籤中,沒有key屬性,可以在<fmt:message>的雙標籤中寫上在value中寫的文件中的鍵,例:
<fmt:message bundle="${bundle}">
title
<fmt:param value="${date}" ></fmt:param>
<fmt:param value="${number1}"></fmt:param>
<fmt:param value="${number2}"></fmt:param>
</fmt:message>
三 國際化中其他標籤的使用
1.亂碼問題
用java方法解決
<%
request.setCharacterEncoding("utf-8");
%>
--%>
用國際化標籤設置
<fmt:requestEncoding value="utf-8"/>
2.設置時區
(1)<fmt:timeZone>標籤
<fmt:timeZone value="GMT+08:00">
</fmt:timeZone>
注:<fmt:timeZone>設置時區 ,但是他的設置值只對標籤體中的內容有效
(2)<fmt:setTimeZone>標籤
設置時間
<jsp:useBean id="date" class="java.util.Date"></jsp:useBean>
<fmt:setTimeZone value="GMT+08:00" />
<%---日期類型的轉換 --%>
一
<fmt:formatDate value="${date}" type="both" dateStyle="long" timeStyle="short" var="time1" scope="request" /><br/>
${time1}
二
<fmt:setTimeZone value="GMT+07:00" />
<fmt:formatDate value="${date}" type="time" timeStyle="full" />
三
<fmt:formatDate value="${date}" pattern="yyyy.MM.dd HH:sss.SSS a"/>