Javaの道 Javaに関する
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道 > オープンソース > Taglibs −5.Standard Taglibs:I18Nタグライブラリ
更新日:2006/6/10
Taglibs−5.Standard Taglibs:I18Nタグライブラリ
ここでは、Standard Taglibsで定義されている、I18Nタグライブラリについて解説します。I18Nタグライブラリでは、ロケールの設定、日付、時刻、数値などの書式設定を行うタグが定義されています。

実行環境
・WindowsXP Home Edition
・J2SDK 1.4.2_04
・Tomcat 5.0.18
・Standard Taglib 1.1.0
I18Nタグライブラリの一覧

I18Nタグライブラリで定義されているタグを以下に記載します。

タグ
内容
ロケールを設定する。
メッセージキーとそれに対応する定型メッセージを設定したリソースバンドルオブジェクトを設定する。<fmt:message>タグからリソースバンドルオブジェクトを指定して使用することが可能。
メッセージキーとそれに対応する定型メッセージを設定したリソースバンドルを設定する。<fmt:bundle>タグ内で、<fmt:message>からリソースバンドルを使用する。
リソースバンドルに設定された定型メッセージを出力する。
<fmt:message>タグ内で、リソースバンドル内で設定された変数に対応する値を設定する。
日付・時刻の書式を設定、出力する。
文字列を解析し、Dateオブジェクトを出力する。
数値・通貨の書式を設定、出力する。
文字列を解析し、Numberオブジェクトを出力する。
リクエスト情報のエンコード方式を設定する。
TimeZoneオブジェクトを生成する。
<fmt:timeZone>タグ内で、<fmt:formatDate>タグ、<fmt:parseDate>タグで使用するTimeZoneの値を規定する。
I18Nタグライブラリの使用例
<fmt:setLocale>

構文1
<fmt:setLocale value=”ロケール”
          [variant=”バリアント”]
          [scope=”{page|request|session|application}”]/>

属性
属性
内容
必須
value
出力処理に適用されるロケールを指定する。ロケールは言語を表す2文字(小文字)の英字と、国を表す2文字(大文字)の英字を-(ハイフン)か、_(アンダーバー)でつなげた値で表現される。
variant
ベンダーやブラウザに依存する表現形式を指定する。詳細はjava.util.LocaleのJavaAPIを参照。
×
scope
ロケール設定のスコープを設定する。スコープはpage、request、session、applicationのいずれかを設定できる。デフォルトでは、pageが設定されている。
×
サンプルコード:localeパラメータに値が設定されている場合に、設定されている値をロケールとして設定します。
<c:if test="${!empty param.locale}">
  <fmt:setLocale value="${param.locale}" scope="page"/>
</c:if>
<fmt:setBundle>

構文1
<fmt:setBundle basename=”基底名”
          [var=”変数名”]
          [scope=”{page|request|session|application}”]/>

属性
属性
内容
必須
basename
リソースバンドルオブジェクトの基底名を完全修飾名で指定する。。基底名がresourcesで、ロケールがjaの場合、リソースバンドルオブジェクトはresources_jaになる。
var
リソースバンドルオブジェクトを参照する変数名。
×
scope
リソースバンドルオブジェクトを参照する変数のスコープを設定する。スコープはpage、request、session、applicationのいずれかを設定できる。デフォルトでは、pageが設定されている。
×
サンプルコード: <fmt:setBundle>タグで設定したリソースバンドルオブジェクトを、<fmt:message>タグで参照しています。
<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}"/>
<fmt:bundle>

構文1
<fmt:bundle basename=”基底名” [prefix=”プレフィックス”]>
   リソースバンドルを参照する処理
</fmt:bundle>

属性
属性
内容
必須
basename
リソースバンドルの基底名を完全修飾名で指定する。基底名がresourcesで、ロケールがjaの場合、リソースバンドルはresources_jaになる。
prefix
<fmt:message>タグで指定されるKeyのPrefixを指定する。Prefixをshopping、Keyをbuyとした場合、リソースバンドルのshopping.buyの値が表示されます。
×
サンプルコード: <fmt:bundle>タグで設定したリソースバンドルを、<fmt:message>タグで参照しています。
<fmt:setLocale value="de"/>
<fmt:bundle 
 basename="org.apache.taglibs.standard.examples.i18n.Resources"
 prefix="com.acme.labels.">
  <fmt:message key="cancel"/>
</fmt:bundle>
<fmt:message>

構文1
<fmt:message key=”メッセージキー”
         [bundle=”リソースバンドル”]
         [var=”変数名”]
         [scope=”{page|request|session|application}”]/>

構文2
<fmt:message key=”メッセージキー”
         [bundle=”リソースバンドル”]
         [var=”変数名”]
         [scope=”{page|request|session|application}”]>
   <fmt:param>リソースバンドル内の変数を指定
</fmt:message>

構文3
<fmt:message [bundle=”リソースバンドル”]
          [var=”変数名”]
          [scope=”{page|request|session|application}”]>
   メッセージキー
   <fmt:param>リソースバンドル内の変数を指定
</fmt:message>

属性
属性
内容
必須
key
リソースバンドルに設定されたメッセージに対応するキーを指定する。
×
bundle
key属性の値が定義されたリソースバンドルを指定する。
×
var
対応するメッセージを代入する変数。
×
scope
メッセージが代入された変数のスコープを設定する。スコープはpage、request、session、applicationのいずれかを設定できる。デフォルトでは、pageが設定されている。
×
サンプルコード: <fmt:setBundle>タグで設定したリソースバンドルオブジェクトを、<fmt:message>タグで参照しています。
<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}"/>
<fmt:param>

構文1
<fmt:param value=”リソースバンドルで使用される値”/>

構文2
<fmt:param>
   リソースバンドルで使用される値
</fmt:param>

属性
属性
内容
必須
value
リソースバンドルに指定されている変数に置き換わる値を指定する。
×
サンプルコード: <fmt:message>タグで指定されたリソースバンドル内の変数の値を<fmt:param>タグの値に置き換えて表示しています。
<fmt:message key="currentTime" bundle="${deBundle}">
  <fmt:param value="${currentDate}"/>
</fmt:message>
<fmt:formatDate>

構文1
<fmt:formatDate value="フォーマットされる日付・時刻"
           [type="{time|date|both}"]
           [dateStyle="{default|short|medium|long|full}"]
           [timeStyle="{default|short|medium|long|full}"]
           [pattern="カスタムパターン"]
           [timeZone="タイムゾーンID"]
           [var="変数名"]
           [scope="{page|request|session|application}"]/>

属性
属性
内容
必須
value
フォーマットされる日付・時刻を表す文字列を指定する。
type
日付・時刻のどちらをフォーマットするか指定する。bothは両方、dateは日付、timeは時刻をフォーマットする。デフォルトではdateが設定される。
×
dateStyle
java.text.DateFormatクラスで定義されている定型フォーマット(DEFAULT, SHORT, MEDIUM, LONG, FULL)を指定する。デフォルトではDEFAULTが設定される。type属性にbothかdateが指定されている場合に有効になる。
×
timeStyle
java.text.DateFormatクラスで定義されている定型フォーマット(DEFAULT, SHORT, MEDIUM, LONG, FULL)を指定する。デフォルトではDEFAULTが設定される。type属性にbothかtimeが指定されている場合に有効になる。
×
pattern
java.text.SimpleDateFormatクラスで定義されているパターン文字に基づき、フォーマットパターンを指定する。
×
timeZone
日付・時刻のタイムゾーンを指定する。タイムゾーンの指定にはタイムゾーンIDを用いる。日本標準時のタイムゾーンIDは"Asia/Tokyo"。タイムゾーンIDの詳細はJavaの道:日付・時刻(TimeZoneクラス)を参照。
×
var
フォーマットされた日付・時刻を代入する変数。
×
scope
日付・時刻が代入された変数のスコープを設定する。スコープはpage、request、session、applicationのいずれかを設定できる。デフォルトでは、pageが設定されている。
×
サンプルコード: <fmt:formatDate>タグのvalue属性で指定したnow変数(Dateオブジェクトを代入)を設定に基づきフォーマットし、表示しています。
<fmt:timeZone value="GMT">
  <fmt:formatDate value="${now}" type="both" 
                  dateStyle="full" timeStyle="full"/>
</fmt:timeZone>
<fmt:parseDate>

構文1
<fmt:parseDate value=”解析する文字列”
          [type=”{time|date|both}”]
          [dateStyle=”{default|short|medium|long|full}”]
          [timeStyle=”{default|short|medium|long|full}”]
          [pattern=”カスタムパターン”]
          [timeZone=”タイムゾーンID”]
          [parseLocale=”ロケール”]
          [var=”変数名”]
          [scope=”{page|request|session|application}”]/>

構文2
<fmt:parseDate [type=”{time|date|both}”]
          [datestyle=”{default|short|medium|long|full}”]
          [timestyle=”{default|short|medium|long|full}”]
          [pattern=”カスタムパターン”]
          [timezone=”タイムゾーンID”]
          [parselocale=”ロケール”]
          [var=”変数名”]
          [scope=”{page|request|session|application}”]>
   解析される文字列
</fmt:parseDate>

属性
属性
内容
必須
value
解析する文字列を指定する。
×
type
日付・時刻のどちらを解析するかを指定する。bothは両方、dateは日付、timeは時刻を解析することを表す。デフォルトではdateが設定される。
×
dateStyle
java.text.DateFormatクラスで定義されている定型フォーマット(DEFAULT, SHORT, MEDIUM, LONG, FULL)を指定する。デフォルトではDEFAULTが設定される。type属性にbothかdateが指定されている場合に有効になる。
×
timeStyle
java.text.DateFormatクラスで定義されている定型フォーマット(DEFAULT, SHORT, MEDIUM, LONG, FULL)を指定する。デフォルトではDEFAULTが設定される。type属性にbothかtimeが指定されている場合に有効になる。
×
pattern
java.text.SimpleDateFormatクラスで定義されているパターン文字に基づき、フォーマットパターンを指定する。
×
timeZone
日付・時刻のタイムゾーンを指定する。タイムゾーンの指定にはタイムゾーンIDを用いる。日本標準時のタイムゾーンIDは"Asia/Tokyo"。タイムゾーンIDの詳細はJavaの道:日付・時刻(TimeZoneクラス)を参照。
×
parseLocale
解析する際のロケールを指定する。Locale定数の一覧はAPIドキュメントを参照。
×
var
解析されたDateオブジェクトを代入する変数。
×
scope
Dateオブジェクトが代入された変数のスコープを設定する。スコープはpage、request、session、applicationのいずれかを設定できる。デフォルトでは、pageが設定されている。
×
サンプルコード:<fmt:formatDate>タグで生成した日付・時刻の文字列を、<fmt:parseDate>タグで解析、フォーマットし、<c:out>タグで表示しています。
<fmt:formatDate value="${now}" type="both" 
                timeStyle="short" var="formatted"/>
<fmt:parseDate value="${formatted}" type="both"
               timeStyle="short" timeZone="GMT" var="parsed"/>
<c:out value="${parsed}"/>
<fmt:formatNumber>

構文1
<fmt:formatNumber value=”フォーマットされる数値”
             [type=”{number|currency|percent}”]
             [pattern=”カスタムパターン”]
             [currencyCode=”通貨コード”]
             [currencySymbol=”通貨記号”]
             [groupingUsed=”{true|false}”]
             [maxIntegerDigits=”整数部分の最大桁数”]
             [minIntegerDigits=”整数部分の最小桁数”]
             [maxFractionDigits=”少数部分の最大桁数”]
             [minFractionDigits=”少数部分の最小桁数”]
             [var=”変数名”]
             [scope=”{page|request|session|application}”]/>

構文2
<fmt:formatNumber [type=”{number|currency|percent}”]
             [pattern=”カスタムパターン”]
             [currencyCode=”通貨コード”]
             [currencySymbol=”通貨記号”]
             [groupingUsed=”{true|false}”]
             [maxIntegerDigits=”整数部分の最大桁数”]
             [minIntegerDigits=”整数部分の最小桁数”]
             [maxFractionDigits=”少数部分の最大桁数”]
             [minFractionDigits=”少数部分の最小桁数”]
             [var=”変数名”]
             [scope=”{page|request|session|application}”]>
   フォーマットされる数値
</fmt:formatNumber>

属性
属性
内容
必須
value
フォーマットされる数値を指定する。
×
type
数値をnumber(数値)、currency(通貨)、percent(パーセント)のいずれの形式でフォーマットするかを指定する。デフォルトではnumberが設定される。
×
pattern
java.text.DecimalFormatクラスで定義されているパターン文字に基づき、フォーマットパターンを指定する。DecimalFormatクラスの詳細はJavaの道:数データ(フォーマット処理)を参照。
×
currencyCode
ISO4217で規定されている通貨コード(日本円はJPY、米ドルはUSD)を指定する。type属性がcurrencyのときのみ有効になる。通貨コードの一覧はBSIのサイトからダウンロードできる。
×
currencySymbol
通貨記号を指定する。type属性がcurrencyのときのみ有効になる。
×
groupingUsed
数値をフォーマットする際、,(カンマ)などにより数値をグルーピングするかを指定する。デフォルトでは、trueが設定されている。
×
maxIntegerDigits
フォーマットされる数値の整数部分の最大桁数を指定する。数値が最大桁数を超えた場合、超えた部分は出力されない。
×
minIntegerDigits
フォーマットされる数値の整数部分の最小桁数を指定する。
×
maxFractionDigits
フォーマットされる数値の少数部分の最大桁数を指定する。
×
minFractionDigits
フォーマットされる数値の少数部分の最小桁数を指定する。
×
var
フォーマットされた数値を代入する変数。
×
scope
数値が代入された変数のスコープを設定する。スコープはpage、request、session、applicationのいずれかを設定できる。デフォルトでは、pageが設定されている。
×
サンプルコード:<fmt:formatNumber>タグのvalue属性で指定した数値を、設定に基づきフォーマットし、表示しています。
<fmt:formatNumber value="12345.67" type="currency"
                  groupingUsed="false" maxIntegerDigits="4"
                  maxFractionDigits="0" /> 
<fmt:parseNumber>

構文1
<fmt:parseNumber value=”解析される数値”
             [type=”{number|currency|percent}”]
             [pattern=”カスタムパターン”]
             [parseLocale=”ロケール”]
             [integerOnly=”{true|false}”]
             [var=”変数名”]
             [scope=”{page|request|session|application}”]/>

構文2
<fmt:parseNumber [type=”{number|currency|percent}”]
            [pattern=”カスタムパターン”]
            [parseLocale=”ロケール”]
            [integerOnly=”{true|false}”]
            [var=”変数名”]
            [scope=”{page|request|session|application}”]>
   解析される数値
</fmt:parseNumber>

属性
属性
内容
必須
value
解析される数値を指定する。
×
type
数値をnumber(数値)、currency(通貨)、percent(パーセント)のいずれの形式で解析するかを指定する。デフォルトではnumberが設定される。
×
pattern
java.text.DecimalFormatクラスで定義されているパターン文字に基づき、フォーマットパターンを指定する。DecimalFormatクラスの詳細はJavaの道:数データ(フォーマット処理)を参照。
×
parseLocale
解析する際のロケールを指定する。Locale定数の一覧はAPIドキュメントを参照。
×
integerOnly
値がtrueの場合は数値の整数部分のみを解析し、出力する。デフォルトではfalseが設定される。
×
var
解析されたNumberオブジェクトを代入する変数。
×
scope
Numberオブジェクトが代入された変数のスコープを設定する。スコープはpage、request、session、applicationのいずれかを設定できる。デフォルトでは、pageが設定されている。
×
サンプルコード:<fmt:formatNumber>タグでフォーマットされた数値をcur変数に代入し、<fmt:parseNumber>タグでcur変数の値を解析しています。
<fmt:formatNumber value="12345.67" type="currency"
                  var="cur" />
<fmt:parseNumber value="${cur}" type="currency"
                 integerOnly="true" />
<fmt:requestEncoding>

構文1
<fmt:requestEncoding [value=”エンコード方式”]/>

属性
属性
内容
必須
value
リクエストデータをエンコードする際のエンコード方式を指定する。サポートされているエンコード方式の詳細はJavaドキュメントを参照。
×
サンプルコード:<fmt:requestEncoding>タグで指定されたエンコード方式で、リクエストデータ(${param.a_umlaut}など)をエンコードし、表示しています。
<fmt:requestEncoding value="UTF-8"/>
<ul>
  <li>a umlaut: <c:out value="${param.a_umlaut}"/>
  <li>o umlaut: <c:out value="${param.o_umlaut}"/>
  <li>u umlaut: <c:out value="${param.u_umlaut}"/>
</ul>
<fmt:setTimeZone>

構文1
<fmt:setTimeZone value=”タイムゾーンID”
            [var=”varName”]
            [scope=”{page|request|session|application}”]/>

属性
属性
内容
必須
value
タイムゾーンIDを指定する。日本標準時のタイムゾーンIDは"Asia/Tokyo"。タイムゾーンIDの詳細はJavaの道:日付・時刻(TimeZoneクラス)を参照。
var
TimeZoneオブジェクトを代入する変数。
×
scope
TimeZoneオブジェクトが代入された変数のスコープを設定する。スコープはpage、request、session、applicationのいずれかを設定できる。デフォルトでは、pageが設定されている。
×
<fmt:timeZone>

構文1
<fmt:timeZone value=”タイムゾーンID>
   タイムゾーンが適用される処理
</fmt:timeZone>

属性
属性
内容
必須
value
タイムゾーンIDを指定する。日本標準時のタイムゾーンIDは"Asia/Tokyo"。タイムゾーンIDの詳細はJavaの道:日付・時刻(TimeZoneクラス)を参照。
サンプルコード:<fmt:timeZone>タグでタイムゾーンをGMTに設定し、<fmt:formatDate>タグを実行しています。
<fmt:timeZone value="GMT">
  <fmt:formatDate value="${now}" type="both"
                  dateStyle="full" timeStyle="full"/>
</fmt:timeZone>



このページのトップへ
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道_CopyrightJavaの道