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:setLocale> | ロケールを設定する。 |
<fmt:setBundle> | メッセージキーとそれに対応する定型メッセージを設定したリソースバンドルオブジェクトを設定する。<fmt:message>タグからリソースバンドルオブジェクトを指定して使用することが可能。 |
<fmt:bundle> | メッセージキーとそれに対応する定型メッセージを設定したリソースバンドルを設定する。<fmt:bundle>タグ内で、<fmt:message>からリソースバンドルを使用する。 |
<fmt:message> | リソースバンドルに設定された定型メッセージを出力する。 |
<fmt:param> | <fmt:message>タグ内で、リソースバンドル内で設定された変数に対応する値を設定する。 |
<fmt:formatDate> | 日付・時刻の書式を設定、出力する。 |
<fmt:parseDate> | 文字列を解析し、Dateオブジェクトを出力する。 |
<fmt:formatNumber> | 数値・通貨の書式を設定、出力する。 |
<fmt:parseNumber> | 文字列を解析し、Numberオブジェクトを出力する。 |
<fmt:requestEncoding> | リクエスト情報のエンコード方式を設定する。 |
<fmt:setTimeZone> | TimeZoneオブジェクトを生成する。 |
<fmt: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}"/>
<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のときのみ有効になる。 × grouping
Used数値をフォーマットする際、,(カンマ)などにより数値をグルーピングするかを指定する。デフォルトでは、trueが設定されている。 x 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>
5Standard Taglibs:I18Nタグライブラリ