JSTL国际化标签库:
?? 其主要标签如下:
NO | 功能分类 | 标签名称 | 描述 |
1 | 国际化标签 | <fmt:setLocal> | 设置一个全局的地区代码 |
2 | <fmt:requestEncoding> | 设置统一的请求编码 | |
3 | 信息显示标签 |
<fmt:bundle> | 设置临时的要读取资源文件的名称 |
4 | <fmt:message> | 通过key取得Value,通过<fmt:param>向动态文本设置内容 | |
5 | <fmt:setBundle> | 设置一个全局的要读取资源文件的名称 | |
6 | 数字及日期格式化 | <fmt:formatNumber> | 格式化数字 |
7 | <fmt:parseName> | 反格式化数字 | |
8 | <fmt:formatDate> | 格式化日期,将日期变为字符串 | |
9 | <fmt:parseDate> | 反格式化日期,将字符串变为日期 | |
10 | <fmt:setTimeZone> | 设置一个全局的时区 | |
11 | <fmt:timeZone> | 设置一个临时的时区 |
<fmt:setLocal>:
? 设定用户所在的区域;
测试页面:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> <body> <% pageContext.setAttribute("date",new Date()); %> 中文显示日期显示: <fmt:setLocale value="zh_CN"/> <fmt:formatDate value="${date}"/><br /> 英文显示日期显示: <fmt:setLocale value="en_US"/> <fmt:formatDate value="${date}"/> </body>
?其属性:
?
No | 属性名称 | EL | 描述 |
1 | value | 支持 | 设置地区的编码,表示一个java.util.Local类 |
2 | variant | 支持 | 如果要访问在同一个web容器下的其他资源时设置,必须要以"/"开头 |
3 | scope | 不支持 | 地区设置的范围 |
<fmt:requestEncoding>:
?? 设置主要功能是设置所有的请求编码,与setCharacterEncoding();
<fmt:requestEncoding value="UTF-8"/>
?其属性:
No | 名称 | EL | 描述 |
1 | value | 支持 | 设置字符编码 |
读取资源文件(国际化中最重要的组成部分是资源文件读取,以*.properties为后缀的资源文件,所有的内容按照“key=value”的格式,在Web中,资源文件要保存在WEB-INF/classes文件下):
<fmt:message>,<fmt:bundle>,<fmt:setBundle>;
<body> <fmt:bundle basename="Message"> <fmt:message key="name" var="nameref"></fmt:message> </fmt:bundle> 姓名:${nameref }<br /> <fmt:bundle basename="Message"> <fmt:message key="info" var="inforef"> <fmt:param value="GOOD" /> </fmt:message> </fmt:bundle> 信息:${inforef } </body>
?其资源文件:
name=keith info=a good student
?在进行资源文件读取时,也可以通过<fmt:setBundl>标签设置一个默认的读取资源文件名称,这样每次在使用<fmt:message>标签进行信息读取时,直接通过bundle设置要读取资源的属性即可:
例子:
<body> <fmt:setBundle basename="Message" var="msg"/> <fmt:message key="name" var="nameref" bundle="${msg}" /> 姓名:${nameref } <fmt:message key="info" var="inforef" bundle="${msg}"> <fmt:param value="GOOD" /> </fmt:message> 信息:${inforef } </body>
?在国际化中,需要建立不同的属性文件,例如:
中文的:Message_zh_CN.properties,英文的:Message_en_US.properties;此时可以通过<fmt:setLocal>标签来指定要读取的区域资源文件:
<fmt:setLocal value="zh_CN" />
<fmt:setBundle basename="Message" var="msg"/>
?
数字格式化标签 :
完成数字格式化的操作,可以使用:<fmt:formatNumber>和<fmt:parseNumber>完成。
测试页面:
<fmt:formatNumber value="199906.600112" maxIntegerDigits="7" maxFractionDigits="3" groupingUsed="true" var="num" /> 格式化后的数字:${num } <fmt:formatNumber value="199906.600112" pattern="##.###E0" var="num"/> 科学计数法:${num }
?此标签的属性:
No | 属性名称 | EL | 描述 |
1 | value | 支持 | 要格式化的数字 |
2 | type | 支持 | 指定格式化的形式,如数字,货币,百分比,默认为数字 |
3 | pattern | 支持 | 要格式化数字的格式 |
4 | currencyCode | 支持 | 货币编号(ISO 4217编码),人民币(CNY),美元(USD) |
5 | currencySymbol | 支持 | 显示的货币符号,如¥或$ |
6 | groupingUsed | 支持 | 是否在数字中加"," |
7 | maxIntegerDigits | 支持 | 可以显示的最大整数位 |
8 | minIntegerDigits | 支持 | 可以显示的最小整数位 |
9 | maxFractionDigits | 支持 | 可以显示最大小数位 |
10 | minFractionDigits | 支持 | 可以显示最小小数位 |
11 | var | 不支持 | 保存已格式化完成的数字的属性名称 |
12 | scope | 不支持 | var变量的保存范围,默认是page |
<fmt:parseNumber>可以进行反格式化数字:
<fmt:parseNumber value="199,906.6" var="num"/> 反格式化数字:${num }<br> <fmt:parseNumber value="19.991E4" pattern="##.###E0" var="num"/> 反科学计数法:${num }<br> <fmt:parseNumber value="98.5%" pattern="00%" var="num"/> 反百分比法:${num }<br>
?此标签的属性:
No | 属性名称 | EL | 描述 |
1 | value | 支持 | 要格式化的数字 |
2 | type | 支持 | 指定格式化的数字形式,如数字,货币,百分比,默认为数字 |
3 | patten | 支持 | 要格式化数字的格式 |
4 | parseLocale | 支持 | 设置文字的区域编码 |
5 | integerOnly | 支持 | 是否只显示整数部分 |
6 | var | 不支持 | 保存已格式化完成的数字的属性名称 |
7 | scope | 不支持 | var变量的保存范围,默认是page |
?
日期格式化标签:<fmt:formatDate>主要用于日期时间的格式化显示;
<body> <% pageContext.setAttribute("dateref",new java.util.Date()); %> <fmt:formatDate value="${dateref}" type="both" dateStyle="default" var="date"/> defalut显示时间:${date }<br /> <fmt:formatDate value="${dateref}" type="both" dateStyle="short" var="date"/> short显示时间:${date }<br /> <fmt:formatDate value="${dateref}" type="both" dateStyle="medium" var="date"/> medium显示时间:${date }<br /> <fmt:formatDate value="${dateref}" type="both" dateStyle="long" var="date"/> long显示时间:${date }<br /> <fmt:formatDate value="${dateref}" type="both" dateStyle="full" var="date"/> full显示时间:${date }<br /> <fmt:formatDate value="${dateref}" type="both" pattern="yyyy年MM月dd日 HH时 mm分 ss秒 SSS毫秒" var="date"/> 定义格式显示时间:${date }<br /> </body>
?此标签的属性是:
No | 属性名称 | EL | 描述 |
1 | value | 支持 | 要格式化的日期时间 |
2 | type | 支持 | 指定格式化的形式,如日期,时间等,默认为date |
3 | pattern | 支持 | 要格式化数字的格式 |
4 | dateStyle | 支持 | 设置日期的显示格式,默认为default |
5 | timeStyle | 支持 | 设置时间的显示个事,默认为default |
6 | timeZone | 支持 | 设置时区 |
7 | var | 不支持 | 存储结果的属性名称 |
8 | scope | 不支持 | var变量的保存范围 |
设置时区:<fmt:setTimeZone /> :
?? 设置失去或者将设置的时区存储到一个属性范围中:
<% pageContext.setAttribute("dateref",new java.util.Date()); %> <fmt:timeZone value="HST"> <fmt:formatDate value="${dateref}" type="both" dateStyle="full" timeStyle="full" var="date"/> </fmt:timeZone> FULL显示日期时间:${date }
?此标签的属性是:
No | 属性名称 | EL | 描述 |
1 | value | 支持 |
要设置的时区,默认为GMT时区(格林威治标准时间) |
2 | var | 不支持 | 存储时区的属性名称 |
3 | scope | 不支持 | var保存范围,默认是page范围 |
?
?