格式化标签
JSTL格式化标签用来格式化并输出文本、日期、时间、数字。
引用方式:在jsp页面加入<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
格式化标签包括:
标签 | 描述 |
---|---|
<fmt:formatNumber> | 使用指定的格式或精度格式化数字 |
<fmt:parseNumber> | 解析一个代表着数字,货币或百分比的字符串 |
<fmt:formatDate> | 使用指定的风格或模式格式化日期和时间 |
<fmt:parseDate> | 解析一个代表着日期或时间的字符串 |
<fmt:bundle> | 绑定资源 |
<fmt:setLocale> | 指定地区 |
<fmt:setBundle> | 绑定资源 |
<fmt:timeZone> | 指定时区 |
<fmt:setTimeZone> | 指定时区 |
<fmt:message> | 显示资源配置文件信息 |
<fmt:requestEncoding> | 设置request的字符编码 |
<fmt:formatNumber> 使用指定的格式或精度格式化数字
语法:
<fmt:formatNumber value="" type="currency" [pattern=""] [currencyCode=""] [currencySymbol=""] [groupingUsed=""] [maxIntegerDigits=""] [minIntegerDigits=""] [maxFractionDigits=""] [minFractionDigits=""] [var=""] [scope=""]>
<fmt:formatNumber value="" [type="currency|number|percent"] [pattern=""] [groupingUsed=""] [maxIntegerDigits=""] [minIntegerDigits=""] [maxFractionDigits=""] [minFractionDigits=""] [var=""] [scope=""]>
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
value | 要显示的数字 | 是 | 无 |
type | NUMBER,CURRENCY,或 PERCENT类型 | 否 | Number |
pattern | 指定一个自定义的格式化模式用与输出 | 否 | 无 |
currencyCode | 货币码(当type="currency"时) | 否 | 取决于默认区域 |
currencySymbol | 货币符号 (当 type="currency"时) | 否 | 取决于默认区域 |
groupingUsed | 是否对数字分组 (TRUE 或 FALSE) | 否 | true |
maxIntegerDigits | 整型数最大的位数 | 否 | 无 |
minIntegerDigits | 整型数最小的位数 | 否 | 无 |
maxFractionDigits | 小数点后最大的位数 | 否 | 无 |
minFractionDigits | 小数点后最小的位数 | 否 | 无 |
var | 存储格式化数字的变量 | 否 | Print to page |
scope | var属性的作用域 | 否 | page |
eg:
<%@ page language="java" 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> <title>Tag Example - www.yiibai.com</title> </head> <body> <c:set var="balance" value="120000.2394" /> <c:out value="${balance}" /> <p>Formatted Number (1): <fmt:formatNumber value="${balance}" type="currency" /> </p> <p>Formatted Number (2): <fmt:formatNumber value="${balance}" type="number" maxIntegerDigits="3" /> </p> <p>Formatted Number (3): <fmt:formatNumber value="${balance}" type="number" maxFractionDigits="3" /> </p> <p>Formatted Number (4): <fmt:formatNumber value="${balance}" type="number" groupingUsed="false" /> </p> <p>Formatted Number (5): <fmt:formatNumber value="${balance}" type="percent" maxIntegerDigits="2" /> </p> <p>Formatted Number (6): <fmt:formatNumber value="${balance}" type="percent" maxFractionDigits="1" /> </p> <p>Formatted Number (7): <fmt:formatNumber value="${balance}" type="percent" minFractionDigits="3" /> </p> <p>Formatted Number (8): <fmt:formatNumber value="${balance}" type="number" pattern="##.###E00" /> </p> <p>Currency in USA: <fmt:setLocale value="en_US" /> <fmt:formatNumber value="${balance}" type="currency" /> </p> </body> </html> //结果输出为: 120000.2394 Formatted Number (1): ¥120,000.24 Formatted Number (2): 000.239 Formatted Number (3): 120,000.239 Formatted Number (4): 120000.239 Formatted Number (5): 24% Formatted Number (6): 12,000,023.9% Formatted Number (7): 12,000,023.940% Formatted Number (8): 12E04 Currency in USA: $120,000.24
<fmt:parseNumber> 解析一个代表着数字,货币或百分比的字符串
语法:
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
value | 要解析的数字 | 否 | Body |
type | NUMBER,,CURRENCY,或 PERCENT | 否 | number |
parseLocale | 解析数字时所用的区域 | 否 | 默认区域 |
integerOnly | 是否只解析整型数(true)或浮点数(false) | 否 | false |
pattern | 自定义解析模式 | 否 | 无 |
timeZone | 要显示的日期的时区 | 否 | 默认时区 |
var | 存储待解析数字的变量 | 否 | Print to page |
scope | var属性的作用域 | 否 | page |
eg:
<%@ page language="java" 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> <title>Tag Example - www.yiibai.com</title> </head> <body> <c:set var="balance" value="125003.350" /> <fmt:parseNumber value="${balance}" var="i" type="number" /> <p>Parsed Number(1):<c:out value="${i}" /></p> <fmt:parseNumber value="${balance}" var="i" type="number" integerOnly="true" /> <p>Parsed Number(2):<c:out value="${i}" /> </body> </html> //结果输出为: Parsed Number(1):125003.35 Parsed Number(2):125003
<fmt:formatDate> 使用指定的风格或模式格式化日期和时间
语法:
<fmt:formatDate value="" [type="date|time|both"]>
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
value | 要显示的日期 | 是 | 无 |
type | DATE, TIME, 或 BOTH | 否 | date |
dateStyle | FULL, LONG, MEDIUM, SHORT, 或 DEFAULT | 否 | default |
timeStyle | FULL, LONG, MEDIUM, SHORT, 或 DEFAULT | 否 | default |
pattern | 自定义格式模式 | 否 | 无 |
timeZone | 显示日期的时区 | 否 | 默认时区 |
var | 存储格式化日期的变量名 | 否 | 显示在页面 |
scope | 存储格式化日志变量的范围 | 否 | 页面 |
格式:
代码 | 描述 | 实例 |
---|---|---|
G |
时代标志 |
AD |
y |
不包含纪元的年份。如果不包含纪元的年份小于 10,则显示不具有前导零的年份。 |
2002 |
M |
月份数字。一位数的月份没有前导零。 |
April & 04 |
d |
月中的某一天。一位数的日期没有前导零。 |
20 |
h |
12 小时制的小时。一位数的小时数没有前导零。 |
12 |
H |
24 小时制的小时。一位数的小时数没有前导零。 |
0 |
m |
分钟。一位数的分钟数没有前导零。 |
45 |
s |
秒。一位数的秒数没有前导零。 |
52 |
S |
毫秒 |
970 |
E |
周几 |
Tuesday |
D |
一年中的第几天 |
180 |
F |
一个月中的第几个周几 |
2 (一个月中的第二个星期三) |
w |
一年中的第几周r |
27 |
W |
一个月中的第几周 |
2 |
a |
a.m./p.m. 指示符 |
PM |
k |
小时(12 小时制的小时) |
24 |
K |
小时(24 小时制的小时) |
0 |
z |
时区 |
中部标准时间 |
' |
转义文本 |
|
'' |
单引号 |
eg:
<%@ page language="java" 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> <title>Tag Example - www.yiibai.com</title> </head> <body> <c:set var="now" value="<%=new java.util.Date() %>" /> <p>Formatted Date (1): <fmt:formatDate value="${now}" type="time" /> </p> <p>Formatted Date (2): <fmt:formatDate value="${now}" type="date" /> </p> <p>Formatted Date (3): <fmt:formatDate value="${now}" type="both" /> </p> <p>Formatted Date (4): <fmt:formatDate value="${now}" type="both" dateStyle="short" timeStyle="short" /> </p> <p>Formatted Date (5): <fmt:formatDate value="${now}" type="both" dateStyle="medium" timeStyle="medium" /> </p> <p>Formatted Date (6): <fmt:formatDate value="${now}" type="both" dateStyle="medium" timeStyle="short" /> </p> <p>Formatted Date (7): <fmt:formatDate value="${now}" type="both" dateStyle="long" timeStyle="long" /> </p> <p>pattern: <fmt:formatDate value="${now}" pattern="yyyy-MM-dd" /> </p> </body> </html> //结果输出为: Formatted Date (1): 11:55:11 Formatted Date (2): 2016-5-14 Formatted Date (3): 2016-5-14 11:55:11 Formatted Date (4): 16-5-14 上午11:55 Formatted Date (5): 2016-5-14 11:55:11 Formatted Date (6): 2016-5-14 上午11:55 Formatted Date (7): 2016年5月14日 上午11时55分11秒 pattern: 2016-05-14
<fmt:parseDate> 解析一个代表着日期或时间的字符串
语法:
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
value | 要显示的日期 | 是 | 无 |
type | DATE, TIME, 或 BOTH | 否 | date |
dateStyle | FULL, LONG, MEDIUM, SHORT, 或 DEFAULT | 否 | default |
timeStyle | FULL, LONG, MEDIUM, SHORT, 或 DEFAULT | 否 | default |
pattern | 自定义格式模式 | 否 | 无 |
timeZone | 显示日期的时区 | 否 | 默认时区 |
var | 存储格式化日期的变量名 | 否 | 显示在页面 |
scope | 存储格式化日志变量的范围 | 否 | 页面 |
eg:
<%@ page language="java" 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> <title>Tag Example - www.yiibai.com</title> </head> <body> <c:set var="now" value="20-10-2010" /> <fmt:parseDate value="${now }" pattern="dd-MM-yyyy" type="date" dateStyle="short"/> <%-- <p>Parse Date:<c:out value="${parsedEmpDate}" /></p> --%> </body> </html> //结果输出为: Wed Oct 20 00:00:00 CST 2010
<fmt:bundle> 绑定资源
资源束包含区域特定对象。资源束包含键值对。
当程序需要区域特定资源时,可以将所有的关键词对所有的locale共享,也可以为locale指定转换后的值。资源束可以帮助提供指定的locale的内容。
一个Java资源束文件包含一系列的键值对。所需类继承自java.util.ListResourceBundle类。类编译后放在Web应用程序的CLASSPATH中。
语法:
<fmt:bundle basename="basename" [prefix="keypre"]>
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
basename | 指定被载入的资源束的基础名称 | 是 | 无 |
prefix | 指定<fmt:message>标签key属性的前缀 | 否 | 无 |
eg:
1.java资源束创建部分
package com.tutorialspoint; import java.util.ListResourceBundle; public class Example_En extends ListResourceBundle{ static final Object[][] contents={ {"count.one","One"}, {"count.two","Two"}, {"count.three","Three"} }; @Override protected Object[][] getContents() { // TODO Auto-generated method stub return contents; } }
2.资源束使用部分
<%@ 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" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <fmt:bundle basename="com.tutorialspoint.Example_En" prefix="count."> <fmt:message key="one" /><br> <fmt:message key="two" /><br> <fmt:message key="three" /><br> </fmt:bundle> <fmt:bundle basename="com.tutorialspoint.Example_En"> <fmt:message key="count.one" /><br> <fmt:message key="count.two" /><br> <fmt:message key="count.three" /><br> </fmt:bundle> </body> </html>
//结果输出为:
One
Two Three
One
Two Three
<fmt:setLocale> 指定地区(将给定的区域存储在locale配置变量中)
语法:
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
value | 指定ISO-639 语言码和ISO-3166 国家码 | 是 | en_US |
variant | 特定浏览器变体 | 否 | 无 |
scope | Locale配置变量的作用域 | 否 | Page |
eg:
1.java资源束创建部分Example_en_US
package com.tutorialspoint; import java.util.ListResourceBundle; public class Example_en_US extends ListResourceBundle{ static final Object[][] contents={ {"count.one","One"}, {"count.two","Two"}, {"count.three","Three"} }; @Override protected Object[][] getContents() { // TODO Auto-generated method stub return contents; } }
2.java资源束创建部分Example_es_ES
package com.tutorialspoint; import java.util.ListResourceBundle; public class Example_es_ES extends ListResourceBundle{ static final Object[][] contents={ {"count.one","Uno"}, {"count.two","Dos"}, {"count.three","Tres"} }; @Override protected Object[][] getContents() { // TODO Auto-generated method stub return contents; } }
3.资源束使用部分
<%@ 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" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <fmt:bundle basename="com.tutorialspoint.Example" prefix="count."> <fmt:message key="one" /><br> <fmt:message key="two" /><br> <fmt:message key="three" /><br> </fmt:bundle> <fmt:setLocale value="es_ES" /> <fmt:bundle basename="com.tutorialspoint.Example"> <fmt:message key="count.one" /><br> <fmt:message key="count.two" /><br> <fmt:message key="count.three" /><br> </fmt:bundle> </body> </html>
//结果输出为:
One
Two
Three
Uno
Dos
Tres
<fmt:setBundle> 绑定资源(载入一个资源束,然后存储在作用域中已命名的变量或bundle配置变量中)类似于<fmt:bundle>
语法:
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
basename | 资源束家族基础名称,暴露给作用域变量或配置变量 | 是 | 无 |
var | 存储新资源束的变量 | 否 | Replace default |
scope | 变量的作用域 | 否 | Page |
eg
1.java资源束创建部分Example_es_ES
package com.tutorialspoint;
import java.util.ListResourceBundle;
public class Example_es_ES extends ListResourceBundle{
static final Object[][] contents={
{"count.one","Uno"},
{"count.two","Dos"},
{"count.three","Tres"}
};
@Override
protected Object[][] getContents() {
// TODO Auto-generated method stub
return contents;
}
}
2.资源束使用部分
<%@ 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" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <fmt:setLocale value="es_ES" /> <fmt:setBundle basename="com.tutorialspoint.Example" var="lang" /> <fmt:message key="count.one" bundle="${lang}"/><br> <fmt:message key="count.two" bundle="${lang}"/><br> <fmt:message key="count.three" bundle="${lang}"/><br> </body> </html>
//结果输出为:
Uno
Dos
Tres
<fmt:timeZone> 指定时区
语法:
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
value | 时区 | 是 | 无 |
eg:
<%@ 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" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <c:set var="now" value="<%=new java.util.Date() %>" /> <p>当前时间: <fmt:formatDate value="${now}" type="both" timeStyle="medium" dateStyle="medium" /> </p> <p>时区为 GMT-8 : <fmt:timeZone value="GMT-8"> <fmt:formatDate value="${now}" type="both" /> </fmt:timeZone> </p> </body> </html>
//结果输出为:
当前时间: 2016-5-18 20:54:04
时区为 GMT-8 : 2016-5-18 4:54:04
<fmt:setTimeZone> 用来复制一个时区对象至指定的作用域,类似于<fmt:timeZone>
语法:
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
value | 时区 | 是 | 无 |
var | 存储新时区的变量名 | 否 | Replace default |
scope | 变量的作用域 | 否 | Page |
eg:
<%@ 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" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <c:set var="now" value="<%=new java.util.Date() %>" /> <p>当前时间: <fmt:formatDate value="${now}" type="both" timeStyle="medium" dateStyle="medium" /> </p> <p>时区为 GMT-8 : <fmt:setTimeZone value="GMT-8" /> <fmt:formatDate value="${now}" type="both" /> </p> </body> </html>
//结果输出为:
当前时间: 2016-5-18 20:54:04
时区为 GMT-8 : 2016-5-18 4:54:04
<fmt:message> 映射一个关键字给局部消息,然后执行参数替换
语法:
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
key | 要检索的消息关键字 | 否 | Body |
bundle | 要使用的资源束 | 否 | 默认资源束 |
var | 存储局部消息的变量名 | 否 | Print to page |
scope | var属性的作用域 | 否 | Page |
eg:
<%@ 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" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <fmt:setLocale value="es_ES" /> <fmt:setBundle basename="com.tutorialspoint.Example" var="lang" /> <fmt:message key="count.one" bundle="${lang}"/><br> <fmt:message key="count.two" bundle="${lang}"/><br> <fmt:message key="count.three" bundle="${lang}"/><br> </body> </html> //结果输出为: Uno Dos Tres
<fmt:requestEncoding> 用来指定返回给Web应用程序的表单编码类型
指定字符集,用于解码来自表单的数据。在字符集不是ISO-8859-1时必须使用这个标签。
用来指定请求的Content-Type,即使response是通过Page指令的contentType属性来编码,这是由于response的实际区域可能与Page指令所指定的不同。
语法:
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
value | 字符编码集的名称,用于解码request参数 | 是 | 无 |
eg:
<fmt:requestEncoding value="UTF-8" />