国际化动态文本(MessageFormat)的使用案例源码和国际化其他标签的使用

 

国际化动态文件和其他标签的实例应用

一  动态文件的概念

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}

      

你可能感兴趣的:(java,Date,jsp,timezone,object,Integer)