国际化动态文件和其他标签的实例应用
一 动态文件的概念
1.什么时候使用动态文本
如果字符串中包含了多个与国际化相关的数据,可以使用MessageFormat类对这些数据进行批量处理 ----比如一段字符串中包含时间、数字、货币、、可以进行批量处理
2.如何使用动态文本---批量处理
(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"/>
3.反解析的JSTL
<fmt:parseDate value="2011年11月15日 上午10:56" type="both" dateStyle="long" timeStyle="short" var="date2" scope="request"></fmt:parseDate>
${date2}