数字日期格式化
数字日期格式化标签共有6个,用来将数字或日期转换成设定的格式。
formatNumber标签、formatData标签、parseNumber标签、parseDate标签、timeZone标签、setTimeZone标签。
2.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>
表2-1-1 <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 属性的类型应用见表 2-2.
表2-1-2 Type的属性类型
类型 | 说明 | 示例 |
number | 数字格式 | 0.8 |
currency | 当地货币 | ¥0.80 |
percent | 百分比格式 | 80% |
【示例代码】:<fmt:formatNumber>标签示例:fmtdemo01.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>I18N标签库</title>
<style>
.table{
cellpadding="0";cellspacing="0";align="center";border=10;
}
</style>
</head>
<body>
<h4 align="center">
<c:out value="<fmt_number>标签的使用"></c:out>
</h4>
<hr>
<table border=1>
<tr align="center">
<td width="100">类型</td>
<td width="100">使用数据</td>
<td width="100">结果</td>
<td width="300">说明</td>
</tr>
<tr>
<td>数字格式化</td>
<td>11108.754</td>
<td><fmt:formatNumber type="number" pattern="###.##">11108.756</fmt:formatNumber></td>
<td>使用pattern可以定义显示的样式。本例设定为###.#小数部分将使用四舍五入法。</td>
</tr>
<tr>
<td>数字格式化</td>
<td>9557</td>
<td><fmt:formatNumber type="number" pattern="#.####E0">9557</fmt:formatNumber></td>
<td>使用科学计数法。</td>
</tr>
<tr>
<td>数字格式化</td>
<td>219557</td>
<td><fmt:formatNumber type="number">219557</fmt:formatNumber></td>
<td>使用默认分组。</td>
</tr>
<tr>
<td>数字格式化</td>
<td>9557</td>
<td><fmt:formatNumber type="number" groupingUsed="false">9557</fmt:formatNumber></td>
<td>不使用分组。</td>
</tr>
<tr>
<td>数字格式化</td>
<td>9557</td>
<td><fmt:formatNumber type="number" maxIntegerDigits="3">9557</fmt:formatNumber></td>
<td>使用位数限定,根据指定的位数显示,其他数字忽略。例如:9不被显示。</td>
</tr>
<tr>
<td>百分比格式化</td>
<td>0.98</td>
<td><fmt:formatNumber type="percent">0.98</fmt:formatNumber></td>
<td>用百分比形式显示一个数据。</td>
</tr>
<tr>
<td>货币格式化</td>
<td>188.88</td>
<td><fmt:formatNumber type="currency">188.8</fmt:formatNumber></td>
<td>将一个数据转化为货币形式输出。</td>
</tr>
<tr>
<td>存储数据</td>
<td>188.88</td>
<td><fmt:formatNumber type="currency" var="money">188.8</fmt:formatNumber>
<c:out value="${money}"></c:out></td>
<td>存储的money的值为${money}</td>
</tr>
</table>
</body>
</html>
【代码说明】:
(1)从应用角度可以把属性分为三类:数字格式化(number)、货币格式化(currency)、百分比格式化(percent)。使用type指定类型。
(2)应用于数字格式化的属性有:
partten属性、maxIntegerDigits属性、minIntegerDigits属性、maxFractionDigits属性和minFactionDigits属性。
其中partten属性在设定格式化样式时会比较准确如:四舍五入、科学计数法的使用。
而使用maIntegerDirgits等属性时,只把设定位数以外的数字舍去。
(3)货币格式化可以使用数字格式化的所有属性。如果有必要建议使用partten属性。
currencyCode属性和currencySymbol只用于货币格式化。
(4)百分比格式化使用到的属性为type属性、partten属性,设定type属性的类型为percent即可。
(5)使用var属性时,会将格式化后的值存在JSP的某个范围内(一个String类型的字符串包括符号等)。
<frm:forNumber>将不再输出格式化后的值可以使用EL表达式输出。
(6)通用属性:type属性、partten属性、var属性和scope属性。
【程序运行结果】:
<fmt_number>标签的使用
类型 | 使用数据 | 结果 | 说明 |
数字格式化 | 11108.754 | 11108.76 | 使用pattern可以定义显示的样式。本例设定为###.#小数部分将使用四舍五入法。 |
数字格式化 | 9557 | 9.557E3 | 使用科学计数法。 |
数字格式化 | 219557 | 219,557 | 使用默认分组。 |
数字格式化 | 9557 | 9,557 | 不使用分组。 |
数字格式化 | 9557 | 557 | 使用位数限定,根据指定的位数显示,其他数字忽略。例如:9不被显示。 |
百分比格式化 | 0.98 | 98% | 用百分比形式显示一个数据。 |
货币格式化 | 188.88 | ¥188.80 | 将一个数据转化为货币形式输出。 |
存储数据 | 188.88 | ¥188.80 | 存储的money的值为¥188.80 |
提示:如果给定的数据类型有错误将或产生异常。例如:给定的数据为aa进行类型转化,将使应用程序无法显示。
因此在实际应用中显示的格式化应该放入<c:catch/>语句中。
2.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>
表2-2-1 <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>标签示例:fmtdemo02.jsp
实现了从字符串中提取数据,并用合适的数据类型进行存储(浮点性、整型等)。可以对转换后的数据进行加法运算。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>I18N标签库</title>
</head>
<body>
<h4>
<c:out value="<frm-parseNumber>标签的使用"></c:out>
</h4>
<hr>
</body>
<fmt:formatNumber var="money" type="currency" >188.8</fmt:formatNumber>
<ul>
<li>格式化前的数据为:
<c:out value="${money}"></c:out>
<fmt:parseNumber var="money" type="currency">${money}</fmt:parseNumber>
<li>格式化后的数据为:<c:out value="${money}"></c:out>
<li>可以对格式化的后的数据进行运算: <c:out value="${money+200}"></c:out>
<li>对百分比进行格式化98%为: <fmt:parseNumber type="percent">98%</fmt:parseNumber>
</ul>
</body>
</html>
【代码解析】:
(1)首先使用<fmt:formatNumber>将188.8转换为字符串¥188.8并在page范围内存储一个String类型的变量,变量名为money。
(2)使用<fmt:parseNumber>将¥188.8转化为浮点型的数据188.8并赋值为变量money,
则变量money转变为一个浮点型的值188.8,对188.8进行加运算。
(3)直接对一个百分比数98%进行转化。
【程序运行结果】:
<frm-parseNumber>标签的使用
- 格式化前的数据为: ¥188.80
- 格式化后的数据为:188.8
- 可以对格式化的后的数据进行运算: 388.8
- 对百分比进行格式化98%为: 0.98
同时,在进行类型转换时如果给出的类型不正确将会出现异常。
例如在进行百分比转化时如果没有给type类型或者给出type类型但提供的数据中没有%都会产生异常。
因此在实际应用中用<c:catch/>捕获异常。
2.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”]
/>
表2-3-1 <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 | 否 | 无 |
表2-3-2 type属性参数说明
参数名 | 说明 |
time | 只显示时间 |
date | 只显示时期 |
both | 显示日期和时间 |
【示例代码】:<fmt:formatDate>标签示例:fmtdemo03.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<jsp:useBean id="date" class="java.util.Date"></jsp:useBean>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>I18N标签库</title>
</head>
<body>
<h4>
<c:out value="<frm:formatDate>标签的使用" escapeXml="false"></c:out>
</h4>
<hr>
<fmt:formatDate value="${date}"></fmt:formatDate>
<br>
<fmt:formatDate value="${date}" type="both"></fmt:formatDate>
<br>
<fmt:formatDate value="${date}" type="both" pattern="yyyy-MM-dd HH:mm:ss"></fmt:formatDate>
<br>
<fmt:formatDate value="${date}" type="both" dateStyle="default"
timeStyle="default"></fmt:formatDate>
<br>
<fmt:formatDate value="${date}" type="both" dateStyle="short"
timeStyle="short"></fmt:formatDate>
<br>
<fmt:formatDate value="${date}" type="both" dateStyle="long"
timeStyle="long"></fmt:formatDate>
<br>
<fmt:formatDate value="${date}" type="both" dateStyle="full"
timeStyle="full"></fmt:formatDate>
<br>
<fmt:formatDate value="${date}" type="both" dateStyle="full"
timeStyle="full"></fmt:formatDate>
<br>
</body>
</html>
【代码解析】:
1)首先通过配置JavaBean在页面上实例化java.util.Date对象。实现代码如下:
<jsp:useBean id="date" class="java.util.Date"></jsp:useBean>
(2)对日期对象进行格式化时${date}是一个日期对象,如果给value设的值为String时程序会报错。
(3)设置type为both时,将显示日期和时间,同时示例中依次改变dateStyle和timeStyle的值作为比较。
【 程序运行结果 】:
<frm:formatDate>标签的使用
2013-9-2
2013-9-2 17:36:17
2013-09-02 17:36:17
2013-9-2 17:36:17
13-9-2 下午5:36
2013年9月2日 下午05时36分17秒
2013年9月2日 星期一 下午05时36分17秒 CST
2013年9月2日 星期一 下午05时36分17秒 CST
2.4、<fmt:formatDate/>标签
【功能】:<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>
表2-4-1 <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>把一个日期对象格式化成一个日期的字符串,并把该字符串以参数名为a存储page范围内。
其次,使用<fmt:parseDate>方法把a的值(字符串)格式化成一个Date并以参数名为b存储在page范围内。
最后,使用Java脚本证明生成的b为对象。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<jsp:useBean id="date" class="java.util.Date"></jsp:useBean>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>I18N标签库</title>
</head>
<body>
<H4><c:out value="<frm:parseDate>标签的使用" escapeXml="false"></c:out></H4>
<hr>
<fmt:formatDate value="${date}" var="a" type="both" dateStyle="full" timeStyle="full"></fmt:formatDate>
<fmt:parseDate var="b" type="both" dateStyle="full" timeStyle="full">${a}</fmt:parseDate>
<fmt:formatDate value="${date}" var="aa" type="both" pattern="yyyy-MM-dd HH:mm:ss"></fmt:formatDate>
<fmt:parseDate var="c" type="both" pattern="yyyy-MM-dd HH:mm:ss">${aa}</fmt:parseDate>
<%
out.println(pageContext.getAttribute("b").toString());
out.println("<br>");
out.println(pageContext.getAttribute("b").hashCode());
out.println("<br>");
out.println("<hr>");
out.println(pageContext.getAttribute("aa").toString());
out.println("<br>");
out.println(pageContext.getAttribute("c").toString());
%>
</body>
</html>
【代码解析】:
(1)使用<fmt:formatDate>把日期对象格式化成字符串。
(2)使用<fmt:parseDate>把字符串对象转化为日期对象,注意同(1)中的参数对比,可以发现两者是一个互逆的过程。
(3)使用Java脚本进行测试Date对象的toString()方法可以输出时间字符串。hashCode()可以得到一个对象的hashCode。
该方法只能应用于对象,因此可以证明得到的是一个日期对象。
【 程序运行结果 】:
<frm:parseDate>标签的使用
Mon Sep 02 17:53:58 CST 2013
-568863824
2013-09-02 17:53:58
Mon Sep 02 17:53:58 CST 2013
2.5、<fmt:setTimeZone/>标签
<fmt:setTimeZone>标签属性说明
参数名 | 说明 | EL | 类型 | 必须 | 默认值 |
value | 使用的时区 | 是 | String Java.util.TimeZone | 是 | 无 |
var | 使用var定义的参数名保存值 | 否 | String | 否 | 无 |
scope | 存储var的JSP范围 | 否 | String | 否 | page |
value用来设定使用的时区,例如中国使用的时区为CST,其他的还有EST、PST等。
可以把时区存储在指定的JSP范围内,例如存储在session中,用户访问的所有页面都可以显示使用的设定的时区下对应的时间。
【示例代码】
<fmt:setTimeZone value=”EST” scope=”session”/>
提示:有关TimeZone的说明见JDK帮助文档的java.util.TimeZone类。
2.6、<fmt:timeZone>标签
【功能】:该标签主要用于设置标签体内使用的时区。
【语法】:
<fmt:timeZone value=”timeZone”>
…..
</fmt:timeZone>
使用<fmt:timeZone></fmt:timeZone>只会应用到标签体内使用的时区,对标签外部将不产生影响。
读取消息资源
2.7、<fmt:bundle>标签
【语法】:
<fmt:bundle basename=”name”[prefix=”prefix”]>
….标签主题
</fmt:bundle>
参数名 | 说明 | EL | 类型 | 必须 | 默认值 |
basename | 指定使用的资源文件的名称 | 是 | String | 是 | 无 |
prefix | 前置关键字 | 是 | String | 否 | 无 |
2.8、<fmt:setBundle>标签
【语法】:
<fmt:setBundle basename=”name” [var=”name”]
[scope=”page|request|session|application”]
>
【参数说明】: <fmt:setBundle>标签属性说明 参数名 | 说明 | EL | 类型 | 必须 | 默认值 |
basename | 指定使用的资源文件的名称 | 是 | String | 是 | 无 |
var | 指定将资源文件保存的名称 | 否 | String | 否 | 无 |
scope | 设定将资源文件保存的JSP范围 | 否 | String | 否 | page |
2.9、<fmt:message>标签
【语法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 。
首先编写一个资源文件message.properties,内容下
name=olive
password=01234
使用标签从资源文件中读取相应的值。
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<jsp:useBean id="date" class="java.util.Date"></jsp:useBean>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>I18N标签库</title>
</head>
<body>
<H4><c:out value="资源文件读取示例"></c:out></H4>
<hr>
<fmt:bundle basename="message">
<c:out value="从message资源文件中得到的key为name的值为:"></c:out>
<fmt:message key="name" ></fmt:message>
</fmt:bundle>
<hr>
<fmt:setBundle basename="message" var="m"/>
<fmt:message key="password" bundle="${m}"></fmt:message>
<hr>
${m}
</body>
</html>
(1)使用<fmt:bundle>标签指定从message.properties文件中读取值。
(2)使用<fmt:message>标签读取资源文件中key为name的值。<fmt:message>标签放在<fmt:bundle>标签体内使用。
(3)使用<fmt:setBundle>标签在page范围绑定一个配置文件,以m为参数名存储。
(4)使用<fmt:message>标签得到key为password的值,此处指定资源文件的方式为使用<fmt:message>标签的bundle属性来设定。
(5)输出参数m的值,加深对bundle的理解。
【 程序运行结果 】:资源文件读取示例
从message资源文件中得到的key为name的值为: olive
01234
javax.servlet.jsp.jstl.fmt.LocalizationContext@60bb1ee
<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.10、<fmt:param>标签
【语法1】:
<fmt:param value=”value”/>
【语法2】:
<fmt:param >
…标签主体
</fmt:param>
(1)创建资源文件。在message.properties文件中增加一个key和value。
news={0} welcome to out website!<br>today is :{1,date}
表达的含义是键news对应的是一个字符串,字符串中还有动态变量{0}表示第一个动态变量,
{1,date}表示第二个动态变量并且该变量是一个日期类型的对象。
( 2 )通过标签从资源文件中取出键值,并给动态变量赋值显示在页面。pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<jsp:useBean id="date" class="java.util.Date"></jsp:useBean>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>I18N标签库</title>
</head>
<body>
<H4>
<c:out value="<fmt:param>标签的使用" escapeXml="false"></c:out>
</H4>
<hr>
<fmt:bundle basename="message">
<fmt:message key="news">
<fmt:param value="olive" />
<fmt:param value="${date}" />
</fmt:message>
</fmt:bundle>
</body>
</html>
(1)使用<fmt:bundle>标签把资源文件绑定在标签体内。
(2)在<fmt:bundle>标签体内使用<fmt:message>得到键值。
(3)使用<fmt:param>为资源文件中的动态变量赋值。
【 程序运行结果 】:<fmt:param>标签的使用
olive welcome to out website!
today is :2013-9-3
国际化
2.11、<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 |
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<jsp:useBean id="date" class="java.util.Date"></jsp:useBean>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>I18N标签库</title>
</head>
<body>
<H4>
<c:out value="<fmt:setlocale>标签的使用" escapeXml="false"></c:out>
</H4>
<hr>
<fmt:setLocale value="en_us" />
<fmt:formatDate value="${date}" type="both" dateStyle="full" timeStyle="full"/>
<hr>
<fmt:setLocale value="zh_cn" />
<fmt:formatDate value="${date}" type="both" dateStyle="full" timeStyle="full"/>
<hr>
<fmt:setLocale value="zh_TW"/>
<fmt:formatDate value="${date}" type="both" dateStyle="full" timeStyle="full"/>
</body>
</html>
【代码解析】:
(1)浏览器默认跟您使用的操作系统的语言相同,因此默认值zh_cn。使用<fmt:setLocale/>标签设置使用的语言为en_us(英语)。
使用<fmt:formateDate>格式化输出的时间字符串,该标签会根据不同的语言输出不同的日期格式。
(2)使用的语言修改为zh_cn,再次用格式化输出。
(3)使用语言修改为zh_TW,输出格式化后的时间。
【 程序运行结果 】:<fmt:setlocale>标签的使用
2013年9月3日 星期二 上午10时07分29秒 CST
2013年9月3日 星期二 上午10时07分29秒 CST
2013年9月3日 星期二 上午10时07分29秒 CST
【语法】:
<fmt:requestEncoding [value=”charEncoding”]/>
【参数说明】:
value 属性用来指定使用的编码集例如: gbk 、 gb2312 等。当没有给出 value 的值时将会自动搜索取寻找合适的编码方式,因此能够很好的解决中文乱码问题。