JSPでリソースバンドルを使う方法|JSTL fmt:bundleタグの基本と実装例
JSTL fmt:bundleタグとは
<fmt:bundle>タグを使用すると、開始タグから終了タグまでの間に記述されたすべての<fmt:message>タグに対して、指定したリソースバンドルが自動的に適用されます。そのため、個々の<fmt:message>タグごとにいちいちリソースバンドルを指定する必要がなくなり、コードがすっきりします。
たとえば、次の2つの<fmt:bundle>ブロックは、どちらも同じ出力結果になります。
<fmt:bundle basename = "com.tutorialspoint.Example"> <fmt:message key = "count.one"/> </fmt:bundle> <fmt:bundle basename = "com.tutorialspoint.Example" prefix = "count."> <fmt:message key = "title"/> </fmt:bundle>
fmt:bundleタグの主な属性
<fmt:bundle>タグには、以下の属性を指定できます。
| 属性 | 説明 | 必須 | デフォルト値 |
|---|---|---|---|
| basename | 読み込むリソースバンドルのベース名を指定します。 | はい | なし |
| prefix | 子要素の<fmt:message>タグ内のキー名の先頭に付加される値を指定します。 | いいえ | なし |
リソースバンドルの仕組み
リソースバンドルには、ロケール(言語・地域)固有のオブジェクトが格納されており、キー/値のペアで構成されています。プログラムがロケール固有のリソースを必要とする場合、キーはすべてのロケールで共通にしつつ、値だけをロケールごとに翻訳して持たせることができます。これにより、多言語対応のコンテンツを効率的に提供できます。
Javaのリソースバンドルファイルには、キーと文字列のマッピングが一連の形で定義されます。ここでは、java.util.ListResourceBundleクラスを継承したコンパイル済みJavaクラスを作成する方法を紹介します。作成したクラスファイルはコンパイルしたうえで、Webアプリケーションのクラスパス上に配置しておく必要があります。
1. デフォルトのリソースバンドルを定義する
まず、以下のようなデフォルトのリソースバンドルを定義しましょう。
package com.tutorialspoint;
import java.util.ListResourceBundle;
public class Example_En extends ListResourceBundle {
public Object[][] getContents() {
return contents;
}
static final Object[][] contents = {
{"count.one", "One"},
{"count.two", "Two"},
{"count.three", "Three"},
};
}
このクラスをExample.classとしてコンパイルし、WebアプリケーションのCLASSPATHに配置します。あとは、次のJSTLタグを使うだけで、3つの数値を表示できます。
2. prefix属性を使ったJSPの例
<%@ taglib uri = "https://java.sun.com/jsp/jstl/core" prefix = "c" %>
<%@ taglib uri = "https://java.sun.com/jsp/jstl/fmt" prefix = "fmt" %>
<html>
<head>
<title>JSTL fmt:bundle Tag</title>
</head>
<body>
<fmt:bundle basename = "com.tutorialspoint.Example" prefix = "count.">
<fmt:message key = "one"/><br/>
<fmt:message key = "two"/><br/>
<fmt:message key = "three"/><br/>
</fmt:bundle>
</body>
</html>
上記のコードを実行すると、次のような結果が出力されます。
One Two Three
3. prefixなしで書いた場合の例
次に、prefix属性を使わずにキー名をフルで指定する書き方を見てみましょう。
<%@ taglib uri = "https://java.sun.com/jsp/jstl/core" prefix = "c" %>
<%@ taglib uri = "https://java.sun.com/jsp/jstl/fmt" prefix = "fmt" %>
<html>
<head>
<title>JSTL fmt:bundle Tag</title>
</head>
<body>
<fmt:bundle basename = "com.tutorialspoint.Example">
<fmt:message key = "count.one"/><br/>
<fmt:message key = "count.two"/><br/>
<fmt:message key = "count.three"/><br/>
</fmt:bundle>
</body>
</html>
この場合も、出力結果はまったく同じになります。
One Two Three
まとめ
<fmt:bundle>タグを使えば、複数の<fmt:message>タグに対して共通のリソースバンドルを一括で適用できます。さらにprefix属性を活用すれば、キー名の重複部分を省略でき、JSPのコードをより簡潔に保てます。国際化対応のWebアプリケーションを開発する際は、ぜひ活用してください。
-
C#でXmlSerializerを使う方法!XMLシリアライズとデシリアライズの手順を解説
シリアライズ(直列化)とデシリアライズ(逆直列化)は、データの送受信を通じて他のアプリケーションと通信するための重要な仕組みです。C#のXmlSerializerクラスを使用すると、オブジェクトをXMLにエンコードする方法を細かく制御できます。 XMLシリアライズに必要な2つのクラス XMLシリアライズを実行するには、次の2つのクラスが必要です。 StreamWriterクラス … XMLファイルへの書き込みを担当します XmlSerializerクラス … オブジェクトのシリアライズを担当します オブジェクトをXMLにシリアライズする手順 Serializeメソッドを呼び出し、引数として
-
Windows PCでResource Hackerを使う方法|EXEファイルの編集とアイコン変更ガイド
Windowsの実行ファイル(.exe)を自分好みにカスタマイズしたいと思ったことはありませんか?あるいは、実行ファイルのアイコンを変更して、見た目をもっとおしゃれにしたいと考えたことはないでしょうか。 もしそうであれば、「Resource Hacker」という便利なユーティリティがおすすめです。このツールを使えば、実行ファイルやリソースファイルの中身を表示・名前変更・編集・追加・削除することができます。しかも、完全無料で利用できるのが嬉しいポイントです。 Resource Hackerの使い方 ※本チュートリアルは上級者向けの内容です。作業を始める前に、必ずシステムの復元ポイントを作成してお