プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

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アプリケーションを開発する際は、ぜひ活用してください。

  1. C#でXmlSerializerを使う方法!XMLシリアライズとデシリアライズの手順を解説

    シリアライズ(直列化)とデシリアライズ(逆直列化)は、データの送受信を通じて他のアプリケーションと通信するための重要な仕組みです。C#のXmlSerializerクラスを使用すると、オブジェクトをXMLにエンコードする方法を細かく制御できます。 XMLシリアライズに必要な2つのクラス XMLシリアライズを実行するには、次の2つのクラスが必要です。 StreamWriterクラス … XMLファイルへの書き込みを担当します XmlSerializerクラス … オブジェクトのシリアライズを担当します オブジェクトをXMLにシリアライズする手順 Serializeメソッドを呼び出し、引数として

  2. Windows PCでResource Hackerを使う方法|EXEファイルの編集とアイコン変更ガイド

    Windowsの実行ファイル(.exe)を自分好みにカスタマイズしたいと思ったことはありませんか?あるいは、実行ファイルのアイコンを変更して、見た目をもっとおしゃれにしたいと考えたことはないでしょうか。 もしそうであれば、「Resource Hacker」という便利なユーティリティがおすすめです。このツールを使えば、実行ファイルやリソースファイルの中身を表示・名前変更・編集・追加・削除することができます。しかも、完全無料で利用できるのが嬉しいポイントです。 Resource Hackerの使い方 ※本チュートリアルは上級者向けの内容です。作業を始める前に、必ずシステムの復元ポイントを作成してお