A、I18N格式标签库
JSTL标签提供了对国际化(I18N)的支持,它可以根据发出请求的客户端地域的不同来显示不同的语言。同时还提供了格式化数据和日期的方法。实现这些功能需要I18N格式标签库(I18N-capable
formation tags liberary)。
I18N格式标签库提供了11个标签,这些 标签从功能上可以划分为3类如下:
1. 数字日期格式化。
formatNumber标签、formatData标签、parseNumber标签、parseDate标签、timeZone标签、setTimeZone标签。
2. 读取消息资源。
bundle标签、message标签、setBundle标签。
3. 国际化。
setlocale标签、requestEncoding标签。
引入该标签库的方法为:
uri="http://java.sun.com/jsp/jstl/fmt" %>
1、数字日期格式化
数字日期格式化标签共有6个,用来将数字或日期转换成设定的格式。
1.1、标签
该标签依据特定的区域将数字改变为不同的格式来显示。
【语法1】
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】
[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]
>
被格式化的数据
【标签参数】
标签参数说明
名称
说明
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、标签
将格式化后的数字、货币、百分比都转化为数字类型。
【语法1】
[type=”number|currency|percent”]
[pattern=”pattern”]
[parseLocale=”locale”]
[intergerOnly=”true|false”]
[scope=”page|request|session|application”]
/>
【语法2】
[type=”number|currency|percent”]
[pattern=”pattern”]
[parseLocale=”locale”]
[intergerOnly=”true|false”]
[scope=”page|request|session|application”]
>
Number
【标签参数】
标签参数说明
名称
说明
EL
类型
是否必须
默认值
value
被解析的字符串
是
String
是
无
type
指定单位(数字、货币、百分比)
是
String
是
number
pattern
格式样式
是
String
否
无
parseLocale
用来替代默认区域的设定
是
String,
Java.util.
Locale
是
默认本地样式
var
存储已经格式化的数据
否
String
否
无
scope
var变量的作用域
否
String
是
page
可以看作是的逆运算。相应的参数和类型的配置和使用格式化时相同。
1.3、标签
该标签主要用来格式化日期和时间。
【语法】
[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”]
/>
【标签参数】
标签属性说明
属性名
说明
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属性参数说明见表9-8。
表9-8 type属性参数说明
参数名
说明
time
只显示时间
date
只显示时期
both
显示日期和时间
1.4、标签
标签主要将字符串类型的时间或日期转化为时间或日期对象。
【语法1】
[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】
[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
【参数说明】
表9-9 标签属性说明
属性名
说明
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
1.5、标签
该标签用于设定默认时区或者将时区存储在指定的JSP范围内。
【语法】:
[var=”name”][scope=”page|request|session|application”]/>
【参数说明】:见表9-10
表9-10 标签属性说明
参数名
说明
EL
类型
必须
默认值
value
使用的时区
是
String
Java.util.TimeZone
是
无
var
使用var定义的参数名保存值
否
String
否
无
scope
存储var的JSP范围
否
String
否
page
value用来设定使用的时区,例如中国使用的时区为CST,其他的还有EST、PST等。可以把时区存储在指定的JSP范围内,例如存储在session中,用户访问的所有页面都可以显示使用的设定的时区下对应的时间。
【示例代码】
scope=”session”/>
提示:有关TimeZone的说明见JDK帮助文档的java.util.TimeZone类。
1.6、标签
该标签主要用于设置标签体内使用的时区。
【语法】:
value=”timeZone”>
…..
使用只会应用到标签体内使用的时区,对标签外部将不产生影响。
2、读取消息资源
读取消息资源用到的标签主要有4个:标签、
2.1、标签
该标签主要用于将资源文件绑定于它的标签体中的显示。
【语法】:
basename=”name”[prefix=”prefix”]>
….标签主题
【参数说明】:见表9-11。
表9-11 标签属性说明
参数名
说明
EL
类型
必须
默认值
basename
指定使用的资源文件的名称
是
String
是
无
prefix
前置关键字
是
String
否
无
2.2、标签
该标签主要用于绑定资源文件或者把资源文件保存在指定的JSP范围内。
【语法】:
[scope=”page|request|session|application”]
>
【参数说明】:见表9-12。
表9-12 标签属性说明
参数名
说明
EL
类型
必须
默认值
basename
指定使用的资源文件的名称
是
String
是
无
var
指定将资源文件保存的名称
否
String
否
无
scope
设定将资源文件保存的JSP范围
否
String
否
page
2.3、标签
该标签主要负责读取本地资源文件,从指定的消息文本资源文件中读取键值,并且可以将键值保存在指定的JSP范围内。
【语法1】:
[scope=”page|request|session|application”]
/>
【语法2】:
[scope=”page|request|session|application”]
>
【语法3】:
[scope=”page|request|session|application”]
>
key
…
【参数说明】:见表9-13。
表9-13 标签属性说明
参数名
说明
EL
类型
必须
默认值
key
指定键值的名称(索引)
是
String
是
无
bundle
指定消息文本的来源
是
LocalizationContext
否
无
var
指定存储键值的变量名
否
String
否
无
scope
指定var的作用域
否
String
否
page
提示:建议此处的bundle使用EL表达式,因为属性bundle的类型为LocalizationContext,而不是一个String类型的URL。
2.4、
该标签主要用于当中资源文件中获得键值时,动态的为资源文件中的变量赋值。
【语法1】:
【语法2】:
…标签主体
3、国际化
国际化这个分类中共包含两个标签:用于设定语言地区和用于设定请求的字符编码的标签。
3.1、标签
标签用来设定用户语言区域。
【语法】:
value=”locale”[variant=”variant”]
[scope=”page|request|session|application”]>
【参数说明】:见表9-14。
表9-14 标签属性说明
参数名
说明
EL
类型
必须
默认值
value
指定区域代码
是
String
java.util.Locale
是
无
variant
操作系统的类型
是
String
是
无
scope
设定时区的作用范围
否
String
是
page
value属性用来指定使用的语言代码,可以从浏览器的【工具】---【Internet选项】---【语言】---【添加】中查看浏览器支持的语言种类及语言代码。例如:中文(zh_cn)、台湾(zh_tw)、香港(zh_mo)等。
3.2、标签
该标签用于设定请求的编码格式。功能同servletRequest.setCharacterEncoding()方法相同。
【语法】:
[value=”charEncoding”]/>
【参数说明】:
value属性用来指定使用的编码集例如:gbk、gb2312等。当没有给出value的值时将会自动搜索取寻找合适的编码方式,因此能够很好的解决中文乱码问题。