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范围 |