JSTL标签库____(2)I18N格式化标签库

来源:互联网 发布:淘宝6s官换机靠谱吗 编辑:程序博客网 时间:2024/04/30 03:51

I18N格式化标签库
JSTL标签提供了对国际化(I18N)的支持,它可以根据发出请求的客户端地域的不同来显示不同的语言。同时还提供了格式化数据和日期的方法。
实现这些功能需要I18N格式标签库(I18N-capable formation tags liberary)。引入该标签库的方法为:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
I18N格式标签库提供了11个标签,这些 标签从功能上可以划分为3类如下:
(1)数字日期格式化。formatNumber标签、formatData标签、parseNumber标签、parseDate标签、timeZone标签、setTimeZone标签。
(2)读取消息资源。bundle标签、message标签、setBundle标签。
(3)国际化。setlocale标签、requestEncoding标签。
1 数字日期格式化
数字日期格式化标签共有6个,用来将数字或日期转换成设定的格式。
1.1<frm:formatNumber/>标签
 该标签依据特定的区域将数字改变为不同的格式来显示。
 【语法1】:
 <frm:formatNumber value=”被格式化的数据”[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]
 > 被格式化的数据<frm:formatNumber>

 属性说明<fmt:formatNumber>标签参数说明
 名称:说明:EL:类型:必须:默认值
 value:要格式化的数据:是:String:是:无
 type:指定类型(单位、货币、百分比等):是:String:否:number
 pattern:格式化的数据样式:是:String:否:无
 currencyCode:货币单位代码:是:String:否:无
 cuttencySymbol:货币符号($、¥):是:String:否:无
 groupingUsed:是否对整数部分进行分组如(9,999):是:boolean:是:true
 maxIntergerDigits:整数部分最对显示多少位数:是:int:否:无
 minIntergerDigits:整数部分最少显示多少位:是:int:否:无
 maxFractionDigits:小数部分最多显示多少位:是:int:否:无
 minFractionDigits:小数部分最少显示多少位:是:int:否:无
 var:存储格式化后的数据:否:String:否:无
 scope:var的JSP范围:否:String:否:page
 
 Type属性的类型应用
 类型:说明:示例
 number:数字格式:0.8
 currency:当地货币:¥0.80
 percent:百分比格式:80%
 
1.2.<frm:parseNumber>标签
 将格式化后的数字、货币、百分比都转化为数字类型。
 【语法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>标签参数说明
  名称:说明:EL:类型:是否必须:默认值
  value:被解析的字符串:是:String:是:无
  type:指定单位(数字、货币、百分比):是:String:是:number
  pattern:格式样式:是:String:否:无
  parseLocale:用来替代默认区域的设定:是:String||Java.util.Locale:是:默认本地样式
  var:存储已经格式化的数据:否:String:否:无
  scope:var变量的作用域:否:String:是:page
 <fmt:parseNumber>可以看作是<fmt:formatNumber>的逆运算。相应的参数和类型的配置和使用<fmt:formatNumber>格式化时相同。
 提示:<fmt:parseNumber>属性参数的配置和使用同<fmt:formatNumber>标签使用的方式一样。同时,在进行类型转换时如果给出的类型不正确将会出现异常。
 例如在进行百分比转化时如果没有给type类型或者给出type类型但提供的数据中没有%都会产生异常。因此在实际应用中用<c:catch/>捕获异常。
 
1.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:设定使用的时区:是:String:否:当地所用时区
  var:存储已格式化的日期或时间:否:String:否:无
  scope:指定var存储的JSP范围:否:String:否:无
 
 其中type属性参数说明
 参数名:说明
  time:只显示时间
  date:只显示时期
  both:显示日期和时间
1.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:取代默认地区设定:是:String:是:默认地区
  dateStyle:字符串使用的日期显示方式:是:String:否:default
  timeStyle:字符串使用的时间显示格式:是:String:否:default
  timeZone:使用的时区:是:String:否:当地区时
  var:使用var定义的名字保存对象:否:String:否:无
  scope:var的JSP范围:否:String:否:page
 
    提示:<fmt:formatDate>和<fmt:parseDate>是相反的运算过程,可以对照学习。

1.5.<fmt:setTimeZone>标签
 该标签用于设定默认时区或者将时区存储在指定的JSP范围内。
 【语法】:
 <fmt:setTimeZone value=”value” [var=”name”][scope=”page|request|session|application”]/>
 【参数说明】 <fmt:setTimeZone>标签属性说明

 参数名:说明:EL:类型:必须:默认值
  value:使用的时区:是:String||ava.util.TimeZone:是:无
  var:使用var定义的参数名保存值:否:String:否:无
  scope:存储var的JSP范围:否:String:否:page
  value用来设定使用的时区,例如中国使用的时区为CST,其他的还有EST、PST等。可以把时区存储在指定的JSP范围内,例如存储在session中,
  用户访问的所有页面都可以显示使用的设定的时区下对应的时间。
   
 提示:有关TimeZone的说明见JDK帮助文档的java.util.TimeZone类。

1.6.<fmt:timeZone>标签
 该标签主要用于设置标签体内使用的时区。
 【语法】:
 <fmt:timeZone value=”timeZone”>
  …..
 </fmt:timeZone>
 使用<fmt:timeZone></fmt:timeZone>只会应用到标签体内使用的时区,对标签外部将不产生影响。

2 读取消息资源
 读取消息资源用到的标签主要有4个:<fmt:message>标签、<fmt:param>标签、<fmt:bundle>标签和<fmt:setBundle>标签。主要用于从资源文件中读取信息。
 2.1.<fmt:bundle>标签
 该标签主要用于将资源文件绑定于它的标签体中的显示。
 【语法】:
 <fmt:bundle basename=”name”[prefix=”prefix”]>
  ….标签主题
 </fmt:bundle>

 【参数说明】: <fmt:bundle>标签属性说明
  参数名:说明:EL:类型:必须:默认值
  basename:指定使用的资源文件的名称:是:String:是:无
  prefix:前置关键字:是:String:否:无
 

 2.2.<fmt:setBundle>标签
 该标签主要用于绑定资源文件或者把资源文件保存在指定的JSP范围内。
 【语法】:
 <fmt:setBundle basename=”name” [var=”name”]  [scope=”page|request|session|application”] >

 【参数说明】: <fmt:setBundle>标签属性说明
  参数名:说明:EL:类型:必须:默认值
  basename:指定使用的资源文件的名称:是:String:是:无
  var:指定将资源文件保存的名称:否:String:否:无
  scope:设定将资源文件保存的JSP范围:否:String:否:page
 
 2.3.<fmt:message>标签
 该标签主要负责读取本地资源文件,从指定的消息文本资源文件中读取键值,并且可以将键值保存在指定的JSP范围内。
 【语法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>标签属性说明
  参数名:说明:EL:类型:必须:默认值
  key:指定键值的名称(索引):是:String:是:无
  bundle:指定消息文本的来源:是:LocalizationContext:否:无
  var:指定存储键值的变量名:否:String:否:无
  scope:指定var的作用域:否:String:否:page
  提示:建议此处的bundle使用EL表达式,因为属性bundle的类型为LocalizationContext,而不是一个String类型的URL
 
 <fmt:bundle>标签中有一个prefix属性,该标签用来指明前缀。例如配置文件内容如下:
 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>

 2.4.<fmt:param>标签
 该标签主要用于当<fmt:message>中资源文件中获得键值时,动态的为资源文件中的变量赋值。
 【语法1】:
 <fmt:param value=”value”/>
 【语法2】:
 <fmt:param > …标签主体 </fmt:param>
3 国际化
 国际化这个分类中共包含两个标签:用于设定语言地区<fmt:setLocale/>和用于设定请求的字符编码的<fmt:requestEncoding>标签。
 3.1.<fmt:setLocale/>标签
 <fmt:setLocale>标签用来设定用户语言区域。
 【语法】:
 <fmt:setLocale value=”locale”[variant=”variant”] [scope=”page|request|session|application”]>
 【参数说明】: <fmt:setLocale>标签属性说明

 参数名:说明:EL:类型:必须:默认值
  value:指定区域代码:是:String||java.util.Locale:是:无
  variant:操作系统的类型:是:String:是:无
  scope:设定时区的作用范围:否:String:是:page
 
 value属性用来指定使用的语言代码,可以从浏览器的【工具】---【Internet选项】---【语言】---【添加】中查看浏览器支持的语言种类及语言代码。
 例如:中文(zh_cn)、台湾(zh_tw)、香港(zh_mo)等。
 3.2.<fmt:requestEncoding>标签
 该标签用于设定请求的编码格式。功能同servletRequest.setCharacterEncoding()方法相同。
 【语法】:
 <fmt:requestEncoding [value=”charEncoding”]/>
   【参数说明】:
 value属性用来指定使用的编码集例如:gbk、gb2312等。当没有给出value的值时将会自动搜索取寻找合适的编码方式,因此能够很好的解决中文乱码问题。

2 0
原创粉丝点击