I18N
用于编写国际化的web程序
taglib:<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
1、<fmt:setLocale>
用于设置用户的本地语言,并将指定的locale保存到javax.servlet.jsp.jstl.fmt.local配置变量中
Config.find(pageContext,Config.FMT_LOCALE)可以获取locale属性
<fmt:setLocale value="locale" variant="variant" scope="page|request|session|application"/>
variant:供应商或者浏览器代码WIN ,MAX ,POSIX
一般都放在页首,其他标签可通过ServletRequest.getLocale()获取locale
<fmt:setLocale value="en"/>
<fmt:setLocale value="zh_CN"/>
2、<fmt:bundle>
创建其标签体使用的I18N本地上下文环境
<fmt:bundle basename="basename" prefix="prefix">
body
</fmt:bundle>
basename:资源包的名称
prefix:指定在<fmt:message>标签的消息键前要添加的前缀
3、<fmt:setBundle>
创建一个I18N本地上下文环境,将他保存到范围变量或者javax.servlet.jsp.jstl.fmt.localizationContext配置变量中
<fmt:setBundle basename="basename" var="varname" scope=""/>
basename:资源包的基名
var:被导出的保存了本地上下文范围变量的名称,类型是javax.servlet.jsp.jstl.fmt.localizationContext
4、<fmt:message>
从资源包中查找一个指定键的值,用于显示本地化的信息
<fmt:message key="key" bundle="resourceBundle" var="varName" scope=""/>
<fmt:message key="key" bundle="resourceBundle" var="varName" scope="">
<fmt:param>
</fmt:message>
<fmt:message bundle="resourceBundle" var="varName" scope=""/>
key
<fmt:param>
</fmt:message>
5、<fmt:param>
提供一个参数,供<fmt:message>使用
<fmt:param value="messageParameter"/>
<fmt:param>
body content
</fmt:param>
可以用来替换message中的参数
6、<fmt:requeatEncoding>
设置请求的字符编码
<fmt:requestEncoding value="charsetName"/>
==request.setCharacterEncoding();
格式化标签
1、<fmt:timeZone>
指定时区,其标签体的时间将按此时区进行格式化或者解析
<fmt:timeZone value="timeZone"/>
body content
</fmt:timeZone>
value:String或者TimeZone
2、<fmt:setTimeZone>
指定时区,并将其 保存到范围变量中,或者保存到javax.servlet.jsp.jstl.fmt.timeZone配置变量中
<fmt:setTimeZone value="timeZone" var="varName" scope=""/>
如果没有var实行,则时区被保存到javax.servlet.jsp.jstl.fmt.timeZone配置变量。
3.<fmt:formatNumber>
按照区域或者定制的方式将数字的值格式化为数字、货币、百分数
<fmt:formatNumber value="value" type="number|currency|percent" pattern="customPattern"
currencyCode="code" currencySymbol="symbol" groupingUsed="true|false" maxIntegerDigits="max"
minIntegerDigits="min" maxFractionDigits="max" minFractionDigits="min" var="varName" scope=""/>
<fmt:formatNumber type="number|currency|percent" pattern="customPattern"
currencyCode="code" currencySymbol="symbol" groupingUsed="true|false" maxIntegerDigits="max"
minIntegerDigits="min" maxFractionDigits="max" minFractionDigits="min" var="varName" scope="">
value
</fmt:formatNumber>
pattern:String 自定义的格式化样式,优于type,java.text.DecimalFormat
currencyCode:String ISO 4271货币代码,用于格式化货币
currencySymbol:String 货币符号
groupingUsed:是否包含用于分组的分隔符,默认true
maxIntegerDigits:格式化输出的整数部分的最大位数
4.<fmt:parseNumber>
将已经格式化的字符串形式的数据、货币或百分数转换为数字类型,跟<fmt:formatNumber>作用相反
<fmt:parseNmber value="value" type"number|currency|percent" pattern="pattern"
parseLocale="locale" integerOnly="true|false" var="varName" scope=""/>
<fmt:parseNumber type"number|currency|percent" pattern="pattern"
parseLocale="locale" integerOnly="true|false" var="varName" scope="">
value
</fmt:parseNumber>
parseLocal:String or Locale
integerOnly:是否只解析数字值的整数部分,默认false
5.<fmt:formateDate>
按照地区或者定制的格式对时间和日期进行格式化
<fmt:formateDate value="value" type="date|time|both" dateStyle="default|short|medium|long|full"
timeStyle="default|short|medium|long|full" pattern="pattern"
timeZone="zone" var="varName" scope=""/>
pattern:String 自定义时间和日期的样式,必须出自java.text.SimpleDateFormat,一旦指定,则type,dateStyle,timeStyle将被忽略
6.<fmt:parseDate>
将已经格式化的字符串形式的时间和日期转换为日期类型
<fmt:parseDate value="value" type="time|date|both" dateStyle="" timeStyle="" pattern=""
timeZone="" parseLocale="Locale" var="" scope=""/>
<fmt:parseDate type="time|date|both" dateStyle="" timeStyle="" pattern=""
timeZone="" parseLocale="Locale" var="" scope="">
value
</fmt:parseDate>
EX:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<title>JSTL: Formatting/I18N Support -- Italian Locale Example</title>
</head>
<body bgcolor="#FFFFFF">
<h3>Italian Locale</h3>
<fmt:setLocale value="it_IT"/>
<fmt:setBundle basename="org.apache.taglibs.standard.examples.i18n.Resources" var="itBundle" scope="page"/>
<fmt:message key="greetingMorning" bundle="${itBundle}"/>
</body>
</html>
<fmt:setLocale value="de"/>
<fmt:bundle basename="org.apache.taglibs.standard.examples.i18n.Resources">
<fmt:message>
greetingMorning
</fmt:message>
</fmt:bundle>