JSTL-格式标签库

主页:http://www.cnblogs.com/EasonJim/p/6958992.html的分支页。

一、<fmt:formatNumber>

<fmt:formatNumber>标签用于格式化数字,百分比和货币。

属性:

<fmt:formatNumber>标签具有如下所示属性:

属性描述是否必需默认值
value 显示的数值
type 数值、货币或百分比 数值
pattern 为输出指定一个自定义格式模式
currencyCode Currency代码(for type="currency") 来自默认语言环境
currencySymbol Currency符号(for type="currency") 来自默认语言环境
groupingUsed 是否将数值分组(TRUE or FALSE) true
maxIntegerDigits 输出的整数位数的最大值
minIntegerDigits 输出的整数位数的最小值
maxFractionDigits 输出的小数位数的最大值
minFractionDigits 输出的小数位数的最小值
var 存储格式化数字的变量名 页面输出
scope 存储格式化数字的变量范围 页面
  • 如果type属性是百分比或数字,那么可以使用一些数字-格式化属性。maxIntegerDigits和minIntegerDigits属性允许指定数字的非小数部分的大小。如果实际数字超过了maxIntegerDigits,那么数字就会被截断。

  • 属性同样允许确定使用多少为小数。minFractionalDigits和maxFractionalDigits属性允许指定小数位数。如果数字超过了小数位数的最大值,那么数字就会被截断。

  • 分组可以用来在成千上万组之间插入逗号。通过将groupingIsUsed属性设置为真或假来指定分组。当分组与minIntegerDigits一起使用时,必须多加小心来得到预想的结果。

  • 可能会选择使用pattern属性。该属性可以包含特殊字符,指定有多喜欢编码的数字。下表展示了这些代码。
SymbolDescription

0

代表了一个数字。

E

代表了指数形式。

#

代表一个数字;显示0为缺席。

.

作为十进制分隔符的一个占位符。

,

作为分组分隔符的一个占位符。

;

分隔形式

-

作为默认的负数前缀。

%

乘以100并作为百分比显示。

?

乘以1000并作为千分比显示。

¤

代表了货币符号; 被动态的货币符号取代。

X

表明任何其他可以用作前缀或后缀的字符。

'

用于在前缀或后缀中引用特殊字符。

实例:

<%@ 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>JSTL fmt:formatNumber Tag</title>
</head>
<body>
<h3>Number Format:</h3>
<c:set var="balance" value="120000.2309" />
<p>Formatted Number (1): <fmt:formatNumber value="${balance}" type="currency"/></p>
<p>Formatted Number (2): <fmt:formatNumber type="number" maxIntegerDigits="3" value="${balance}" /></p>
<p>Formatted Number (3): <fmt:formatNumber type="number" maxFractionDigits="3" value="${balance}" /></p>
<p>Formatted Number (4): <fmt:formatNumber type="number" groupingUsed="false" value="${balance}" /></p>
<p>Formatted Number (5): <fmt:formatNumber type="percent" maxIntegerDigits="3" value="${balance}" /></p>
<p>Formatted Number (6): <fmt:formatNumber type="percent" minFractionDigits="10" value="${balance}" /></p>
<p>Formatted Number (7): <fmt:formatNumber type="percent" maxIntegerDigits="3" value="${balance}" /></p>
<p>Formatted Number (8): <fmt:formatNumber type="number" pattern="###.###E0" value="${balance}" /></p>
<p>Currency in USA :
<fmt:setLocale value="en_US"/>
<fmt:formatNumber value="${balance}" type="currency"/></p>
</body>
</html>

这将会产生如下所示结果:

二、<fmt:parseNumber>

<fmt:parseNumber>标签用于解析数字、百分比和货币。

属性:

<fmt:parseNumber>标签具有如下所示属性:

属性描述是否必需默认值
value 要读取(解析)的数值 Body
type 数字、货币或百分比 数字
parseLocale 解析数字时使用的语言环境 默认语言环境
integerOnly 解析一个整数(true)还是解析一个浮点数(false) false
pattern 自定义解析模式
timeZone 显示日期的时区 默认的时区
var 存储解析数字的变量名 页面输出
scope 存储格式化数字的变量范围 页面

提供的pattern属性的工作方式与<fmt:formatNumber>标签的pattern属性类似。然而,在解析的情况中,pattern属性告诉解析器想要什么格式。

实例:

<%@ 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>JSTL fmt:parseNumber Tag</title>
</head>
<body>
<h3>Number Parsing:</h3>
<c:set var="balance" value="1250003.350" />

<fmt:parseNumber var="i" type="number" value="${balance}" />
<p>Parsed Number (1) : <c:out value="${i}" /></p>
<fmt:parseNumber var="i" integerOnly="true" type="number" value="${balance}" />
<p>Parsed Number (2) : <c:out value="${i}" /></p>

</body>
</html>

这将会产生如下所示结果:

三、<fmt:formatDate>

<fmt:formatDate>标签用于以多种方式格式化日期。

属性:

<fmt:formatDate>标签具有如下所示属性:

属性描述是否必需默认值
value 显示的日期值
type 日期、时间或两者 日期
dateStyle FULL,LONG,MEDIUM,SHORT,或默认 默认
timeStyle FULL,LONG,MEDIUM,SHORT,或默认 默认
pattern 自定义格式化模式
timeZone 显示的日期时区 默认的时区
var 存储格式化日期的变量名 页面输出
scope 存储格式化日期的变量范围 页面

pattern属性指定了更精确地日期处理:

代码目的示例

G

时代指示器

AD

y

2002

M

April & 04

d

一个月中的某一天

20

h

时间(12-hour time)

12

H

时间(24-hour time)

0

m

分钟

45

s

52

S

毫秒

970

E

一周中的某一天

Tuesday

D

一年中的某一天

180

F

一个月中的某一周的某一天

2 (2nd Wed in month)

w

一年中的某一周

27

W

一个月中的某一周

2

a

a.m./p.m. 显示器

PM

k

时间(12-hour time)

24

K

时间(24-hour time)

0

z

时区

Central Standard Time

'

 

文本消逝

''

 

单引号

实例:

<%@ 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>JSTL fmt:dateNumber Tag</title>
</head>
<body>
<h3>Number Format:</h3>
<c:set var="now" value="<%=new java.util.Date()%>" />

<p>Formatted Date (1): <fmt:formatDate type="time" value="${now}" /></p>
<p>Formatted Date (2): <fmt:formatDate type="date" value="${now}" /></p>
<p>Formatted Date (3): <fmt:formatDate type="both" value="${now}" /></p>
<p>Formatted Date (4): <fmt:formatDate type="both" dateStyle="short" timeStyle="short" value="${now}" /></p>
<p>Formatted Date (5): <fmt:formatDate type="both" dateStyle="medium" timeStyle="medium" value="${now}" /></p>
<p>Formatted Date (6): <fmt:formatDate type="both" dateStyle="long" timeStyle="long" value="${now}" /></p>
<p>Formatted Date (7): <fmt:formatDate pattern="yyyy-MM-dd" value="${now}" /></p>

</body>
</html>

这将会产生如下所示的结果:

四、<fmt:parseDate>

<fmt:parseDate>标签用于解析日期。

属性:

<fmt:parseDate>标签具有如下所示属性:

属性描述是否必需默认值
value 要读取(解析)的日期值 Body
type 日期、时间或两者 日期
dateStyle FULL,LONG,MEDIUM,SHORT,或默认 默认
timeStyle FULL,LONG,MEDIUM,SHORT,或默认 默认
parseLocale 解析日期时使用的语言环境 默认语言环境
pattern 自定义解析模式
timeZone 解析的日期的时区 默认的时区
var 存储解析日期的变量名 页面输出
scope 存储格式化日期的变量范围 页面

实例:

<%@ 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>JSTL fmt:parseDate Tag</title>
</head>
<body>
<h3>Date Parsing:</h3>
<c:set var="now" value="20-10-2010" />

<fmt:parseDate value="${now}" var="parsedEmpDate" pattern="dd-MM-yyyy" />
<p>Parsed Date: <c:out value="${parsedEmpDate}" /></p>

</body>
</html>

这将产生如下所示的结果:

五、<fmt:bundle>

<fmt:bundle>标签使指定的包对所有的出现在<fmt:bundle></fmt:bundle>标签之间的<fmt:message>标签是可用的。这可以节省额外的步骤为每个<fmt:message>标签指定资源包。

例如,下面的两个<fmt:bundle>块会产生相同的输出:

<fmt:bundle basename="com.jsoft.Example">
    <fmt:message key="count.one"/>
</fmt:bundle>
<fmt:bundle basename="com.jsoft.Example" prefix="count.">
    <fmt:message key="title"/>
</fmt:bundle>

 

属性:

<fmt:bundle>标签具有如下所示属性:

属性描述是否必需默认值
basename 指定了要被加载的资源包的基名。
prefix 在<fmt:message>子标签中预先考虑的每个键值名

实例:

资源包包含特定于本地语言环境的对象。资源包包含键/值对。当程序需要一个特定于本地语言环境的资源时,要把所有的键与所有的语言环境保持一致,但可以有特定于语言环境的转换值。资源包中帮助提供特定于语言环境的内容。

一个Java资源包文件包含一系列key-to-string映射。关注的方法包括创建扩展java.util.ListResourceBundle类的编译后的Java类。必须编译这些类文件并使其可用于Web应用程序的类路径中。

定义一个默认的资源包,如下所示:

package com.jsoft;
import java.util.ListResourceBundle;
public class Example extends ListResourceBundle {
  public Object[][] getContents() {
    return contents;
  }
  static final Object[][] contents = {
  {"count.one", "One"},
  {"count.two", "Two"},
  {"count.three", "Three"},
  };
}

编译上述类Example.class并确保它在Web应用程序中的类路径中时可用的。现在可以使用下面的JSTL标签来显示三个数字,如下所示:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
<title>JSTL fmt:bundle Tag</title>
</head>
<body>

<fmt:bundle basename="com.jsoft.Example" prefix="count.">
   <fmt:message key="one"/><br/>
   <fmt:message key="two"/><br/>
   <fmt:message key="three"/><br/>
</fmt:bundle>

</body>
</html>

这会产生如下所示的结果:

在不带前缀的情况下尝试上述例子,如下所示:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
<title>JSTL fmt:bundle Tag</title>
</head>
<body>

<fmt:bundle basename="com.jsoft.Example">
   <fmt:message key="count.one"/><br/>
   <fmt:message key="count.two"/><br/>
   <fmt:message key="count.three"/><br/>
</fmt:bundle>

</body>
</html>

这会产生如下所示的结果:

六、<fmt:setLocale>

<fmt:setLocale>标签用于在语言环境配置变量中存储给定的语言环境。

属性:

<fmt:setLocale>标签具有如下所示属性:

属性描述是否必需默认值
value 指定了一个两部分代码,代表ISO-639语言代码和ISO-3166国家代码。 en_US
variant 浏览器特定的变量
scope 语言环境配置变量的范围 页面

实例:

资源包包含特定于本地语言环境的对象。资源包包含键/值对。当程序需要一个特定于本地语言环境的资源时,要把所有的键与所有的语言环境保持一致,但可以有特定于语言环境的转换值。资源包中帮助提供特定于语言环境的内容。

一个Java资源包文件包含一系列key-to-string映射。关注的方法包括创建扩展java.util.ListResourceBundle类的编译后的Java类。必须编译这些类文件并使其可用于Web应用程序的类路径中。

定义一个默认的资源包,如下所示:

package com.jsoft;

import java.util.ListResourceBundle;

public class Example extends ListResourceBundle {
  public Object[][] getContents() {
    return contents;
  }
  static final Object[][] contents = {
  {"count.one", "One"},
  {"count.two", "Two"},
  {"count.three", "Three"},
  };
}

现在再定义一个资源包,使用西班牙语:

package com.jsoft;

import java.util.ListResourceBundle;

public class Example_es_ES extends ListResourceBundle {
  public Object[][] getContents() {
    return contents;
  }
  static final Object[][] contents = {
  {"count.one", "Uno"},
  {"count.two", "Dos"},
  {"count.three", "Tres"},
  };
}

编译上述类Example.class和Example_es_ES.class,确保它们在Web应用程序中的类路径中是可用的。现在可以使用下面的JSTL标签来显示三个数字,如下所示:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
<title>JSTL fmt:setLocale Tag</title>
</head>
<body>

<fmt:bundle basename="com.jsoft.Example">
   <fmt:message key="count.one"/><br/>
   <fmt:message key="count.two"/><br/>
   <fmt:message key="count.three"/><br/>
</fmt:bundle>

<!-- Change the Locale -->
<fmt:setLocale value="es_ES"/>
<fmt:bundle basename="com.jsoft.Example">
   <fmt:message key="count.one"/><br/>
   <fmt:message key="count.two"/><br/>
   <fmt:message key="count.three"/><br/>
</fmt:bundle>

</body>
</html>

这将产生如下所示结果:

七、<fmt:setBundle>

<fmt:setBundle>标签用于加载资源包,并把它存储在已命名的给定范围的变量中或存储在包配置变量中。

属性:

<fmt:setBundle>标签具有如下所示属性:

属性描述是否必需默认值
basename 资源包家族的基本名称,作为一个给定范围的变量或配置变量来显示
var 存储新包的变量名 取代默认值
scope 存储新包的变量范围 页面

实例:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
<title>JSTL fmt:setBundle Tag</title>
</head>
<body>

<fmt:setLocale value="en"/>
<fmt:setBundle basename="com.jsoft.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>

这将产生如下所示结果:

八、<fmt:timeZone>

<fmt:timeZone>标签用于指定所有标签主体内用到的时区。

属性:

<fmt:timeZone>标签具有如下所示属性:

属性描述是否必需默认值
value 应用于主体的时区

实例:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
  <head>
    <title>JSTL fmt:timeZone Tag</title>
  </head>

  <body>
    <c:set var="now" value="<%=new java.util.Date()%>" />
    <table border="1" width="100%">
      <tr>
        <td width="100%" colspan="2" bgcolor="#0000FF">
          <p align="center">
            <b>
              <font color="#FFFFFF" size="4">Formatting:
              <fmt:formatDate value="${now}" type="both" timeStyle="long" dateStyle="long" />
              </font>
            </b>
          </p>
        </td>
      </tr>

      <c:forEach var="zone" items="<%=java.util.TimeZone.getAvailableIDs()%>">
        <tr>
          <td width="51%">
            <c:out value="${zone}" />
          </td>
          <td width="49%">
            <fmt:timeZone value="${zone}">
              <fmt:formatDate value="${now}" timeZone="${zn}" type="both" />
            </fmt:timeZone>
          </td>
        </tr>
      </c:forEach>
    </table>
  </body>
</html>

这将产生如下所示结果:

九、<fmt:setTimeZone>

<fmt:setTimeZone>标签用于将时区对象复制到指定的范围变量中。

属性:

<fmt:setTimeZone>标签具有如下所示属性:

属性描述是否必需默认值
value 作为给定范围的变量或配置变量显示的时区
var 存储新时区的变量名 取代默认值
scope 存储新时区的变量范围 页面

实例:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
<title>JSTL fmt:setTimeZone Tag</title>
</head>
<body>
<c:set var="now" value="<%=new java.util.Date()%>" />
<p>Date in Current Zone: <fmt:formatDate value="${now}" type="both" timeStyle="long" dateStyle="long" /></p>
<p>Change Time Zone to GMT-8</p>
<fmt:setTimeZone value="GMT-8" />
<p>Date in Changed Zone: <fmt:formatDate value="${now}" type="both" timeStyle="long" dateStyle="long" /></p>
</body>
</html>

这将产生如下所示的结果:

十、<fmt:message>

<fmt:message>标签将键映射到本地化的消息中并执行参数替换。

属性:

<fmt:message>标签具有如下所示属性:

属性描述是否必需默认值
key 要检索的消息键 Body
bundle 使用的资源包 默认包
var 存储本地化消息的变量名 页面输出
scope 存储本地化消息的变量范围 页面

实例:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
<title>JSTL fmt:message Tag</title>
</head>
<body>

<fmt:setLocale value="en"/>
<fmt:setBundle basename="com.jsoft.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>

这将会生成如下所示结果:

十一、<fmt:requestEncoding>

<fmt:requestEncoding>标签用于指定编码类型,该编码类型用于将数据传回到Web应用程序的表单中。

属性:

<fmt:requestEncoding>标签具有如下所示属性:

属性描述是否必需默认值
key 当解码请求参数时,想要应用的字符编码的名称

当想要为从表单发送的解码数据指定字符编码时,就会用到< fmt:requestEncoding >标签。该标签必须和与ISO-8859-1不同的字符编码一起使用。由于大多数浏览器在它们的请求中不包括内容类型的头信息,所以这个标签是必需的。

<fmt:requestEncoding>标签的目的是指定请求的内容类型。必须指定内容类型,即使页面编码生成的响应式通过页面指令的内容类型属性指定的。这是因为响应的实际语言环境(以及字符编码)可能与页面指令中指定的值不同。

如果页面包含一个I18N-capable格式化操作,通过调用ServletResponse.setLocale()设置了响应的语言环境(以及字符编码),任何在页面指令中指定的编码都将被覆盖。

实例:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
<title>JSTL fmt:message Tag</title>
</head>
<body>

<fmt:requestEncoding value="UTF-8" />
<fmt:setLocale value="es_ES"/>
<fmt:setBundle basename="com.jsoft.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>

这将产生如下所示的结果:

 

posted @ 2017-06-07 20:41  EasonJim  阅读(690)  评论(0编辑  收藏  举报