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

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

一  动态文件的概念

1.什么时候使用动态文本

如果字符串中包含了多个与国际化相关的数据,可以使用MessageFormat类对这些数据进行批量处理 ----比如一段字符串中包含时间、数字、货币、、可以进行批量处理

(1)MessageFormat类允许开发人员用占位符替换掉字符串中的敏感数据(即国际化相关的数据)。

(2)MessageFormat类在格式化输出包含占位符的文本时,messageFormat类可以接收一个参数数组,以替换文本中的每一个占位符。

(3)批量处理是把国际化的文件用占位符代替,组成一个数组

二  动态文本的使用

1.在java中动态文本的使用

(1)把字符串改为(模式字符串)占位符

     At 12:30 pm onjul 3,1998, a hurricance destroyed 99 houses and caused $1000000 of damage

代替为:

模式字符串:

pattern =At [0], a hurricancedestroyed [1] houses and caused [2] of damage

(2)设置动态文本的模型,并指明显示的国家,可以值确定模式,默认的国家的当地的

  MessageFormat mf = newMessageFormat(pattern, Locale.US);

(3)创建数组为模式字符串赋值(为占位符赋值)

   Object[] objs = { new Date(), newInteger(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:messagebundle="${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:requestEncodingvalue="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"/>

fn:length函数

fn:length函数用于返回一个集合或数组对象中包含的元素的个数,或返回一个字符串中包含的字符的个数,返回值为int类型。fn:length函数接收一个参数,这个参数可以是<c:forEach>标签的items属性支持的任何类型,包括任意类型的数组、java.util.Collection、java.util.Iterator、java.util.Enumeration、java.util.Map等类的实例对象和字符串。

如果fn:length函数的参数为null或者是元素个数为0的集合或数组对象,则函数返回0;如果参数是空字符串,则函数返回0。例程8-55是使用fn:length函数的实例程序。

例程8-55  fn_length.jsp

<%@ taglibprefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>

<%@ pagecontentType="text/html;charset=gb2312" %>

<%@ pageimport="java.util.*, org.it315.UserBean" %>

<%

       Collection users = new ArrayList();

       for(int i=0; i<5; i++)

       {

              UserBean user = new UserBean();

              user.setUserName("user"+ i);

              user.setPassword("guest"+ i);

              users.add(user);

       }

       session.setAttribute("users",users);

%>

There are${fn:length(users)} users online.<hr />

字符串“www.it315.org”中包含 ${fn:length("www.it315.org")} 个字符

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值