本篇介紹JSTL(JSP Standard Tag Library)的格式化標籤(formatting tags)。
閱讀這篇文章前要先了解以下...
- JSP指令(JSP Directives)
- JSP Scripting Elements
- JSP物件與作用範圍(JSP Objects and Scopes)
- Expression Language (EL)
JSTL格式化標籤屬於I18N國際化標籤函式庫(I18N tags)中的一個子功能,主要用來作一些數字及日期的格式化輸出,包括以下
<fmt:formatNumber>
<fmt:formatDate>
<fmt:parseDate>
<fmt:parseNumber>
<fmt:setTimeZone>
<fmt:timeZone>
使用JSTL前記得先把JSTL的jar檔匯入應用程式的函式庫(library),可以到這下載。
jar檔匯入後,JSP頁面要用taglib指令參照格式化標籤的URI,也就是把下面這行貼到JSP頁面的上方
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
如果貼上上面那段taglib敘述後出現錯誤如下,通常是因為...
- jar檔沒有匯入
- jar檔匯入的位置不正確
- jar檔版本有問題
<fmt:formatNumber>標籤
<fmt:formatNumber>
有下列屬性(attributes)
value
:參數為原始數值,為必要的屬性,無預設值。type
:參數有三種,分別是number
(數字),currency
(貨幣)及percent
(百分筆),預設為number
。若設定為currency
,則預設貨幣格式為系統語言設定地區的格式,例如在台灣為zh-TW
。若要改變顯示的幣別要先用<fmt:setLocale>
標籤來設定ISO639搭配ISO-3166的語言國別碼。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ 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=UTF-8"> <title>JSTL格式化標籤</title> </head> <body> <p>數字格式,type = number: <fmt:formatNumber value="123.456" type="number" /></p> <p>百分比格式,type = percent: <fmt:formatNumber value="123.456" type="percent" /></p> <p>貨幣格式,type = currency: <fmt:formatNumber value="123.456" type="currency"/></p> <fmt:setLocale value="en_US"/> <p>美元 en_US: <fmt:formatNumber value="123.456" type="currency"/></p> <fmt:setLocale value="ja_JP"/> <p>日元 ja_JP: <fmt:formatNumber value="123.456" type="currency"/></p> <fmt:setLocale value="de_DE"/> <p>歐元 de_DE: <fmt:formatNumber value="123.456" type="currency"/></p> <fmt:setLocale value="ko_KR"/> <p>韓元 ko_KR: <fmt:formatNumber value="123.456" type="currency"/></p> <fmt:setLocale value="zh_CN"/> <p>人民幣 zh_CN: <fmt:formatNumber value="123.456" type="currency"/></p> </body> </html>
pattern
使用下列符號來自定輸出格式0
:表示一個位數,若無該位數則顯示0E
:指數表示#
:表示一個位數.
:小數位符號,只能有一個,若有兩個或以上則會出現錯誤,
:分位符號;
:分格符號 (不知道幹嘛用的)-
:負號%
:以百分比表示?
:原數值乘1000並以每千分之的方式表示¤
:加上貨幣單位 (好特別的參數)X
:前墜字或後墜字,可以是關鍵符號外的任意其他字
currencyCode
:使用ISO 4127貨幣代碼,當type為currency時才會使用。currencySymbol
:貨幣符號,當type
為currency
時才會使用。groupingUsed
:參數為true
或false
,若設定為true則每千分位會加上個逗點,例如123,456
,若為false
則為123456
。預設為true
。maxIntegerDigits
:最大整數輸出位數,非必要屬性。例如原始值為123456,maxIntegerDigits設定為2,則輸出為56。minIntegerDigits
:最小整數輸出位數,非必要屬性。例如原始值為123456,minIntegerDigits設定為10,則輸出為0,000,123,456。minFractionDigits
:最小小數輸出位數,非必要屬性。例如原始值為1.23456,minFractionDigits設定為10,則輸出為1.2345600000。 範例...
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ 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=UTF-8"> <title>JSTL格式化標籤</title> </head> <body> <p>maxIntegerDigits="2": <fmt:formatNumber value="1234.5678" maxIntegerDigits="2"/></p> <p>minIntegerDigits="10": <fmt:formatNumber value="1234.5678" minIntegerDigits="10"/></p> <p>maxFractionDigits="2": <fmt:formatNumber value="1234.5678" maxFractionDigits="2"/></p> <p>minFractionDigits="10": <fmt:formatNumber value="1234.5678" minFractionDigits="10"/></p> </body> </html>
var
:變數名稱,將格式化的結果存為字串並設定在servlet的attribute內,設定範圍參考scope
屬性,可用getAttribute()
方法取出,或在JSP用EL取出。若有設定此屬性則不會將格式化結果輸出至畫面。- scope:
var
變數的儲存範圍,範圍有page
,request
,session
及application
四種,預設為page
。此屬性則一定要同時設定var
屬性,例如scope
設為page
,並將var
的名稱設為"f
"。則在JSP可利用Expressoins輸出...
如果覺得文章有幫助的話還幫忙點個Google廣告,感恩。
沒有留言:
張貼留言