Strutsメッセージのまとめ-(1)

Strutsで使用するメッセージリソースは、色々な機能から使用されるため理解するのが難しいことの1つだと思います。
さらに、Struts1.2からはメッセージ関係のAPIに仕様変更がありました。そのため今まで使っていた方式が非推奨になったりしています。

このような混乱の元をちょっと整理して、「Strutsメッセージのまとめ」として紹介します。

Strutsのメッセージリソースは、次のような機能から使用されます。


準備として、リソースファイルについてについて説明します。

0.リソースファイルについて

リソースファイルは、propertiesファイルとして用意し、struts-configで設定します。
<message-resources parameter="MessageResources" />
これで、クラスパス直下にMessageResources.propertiesというファイルがあればOKです。
パッケージをつけることも可能です。

	<message-resources parameter="foo.bar.MessageResources" />
→パッケージfoo.barに、MessageResources.propertiesを配置

上記の指定だけで、次のような他言語のリソースが使用可能です。
MessageReosurces.properties (既定のリソース)
MessageReosurces_ja_JP.properties (日本語リソース)
…その他のロケールのリソース

日本語リソースにない文字列は、既定リソースが使用されます。
ja_JPという部分は、日本語の日本という国を意味します。
※日本語=日本と言えますが、言語と国が1:1で一致しない国もあります。英語、カナダなど

こうすることで、(大雑把に書くと)Strutsは日本語ユーザーに対して、日本語リソースを使って表示してくれます。
リソースファイルの仕組みはSturtsに限った話ではなく、Javaの仕組みです。
Strutの仕組みは、クライアントのロケールにあったリソースを選択してくれることです。

このようなロケール選択の仕組みは、これから紹介するどの文言でも使用される仕組みです。

1.JSPでの通常のリソース文言(国際化対応など)

単純で分かりやすい使われ方です。
JSP内に直接、文言を記述してしまうと、他言語・国際化対応したアプリケーションを作る場合に都合が悪いです。
そのためJSP内の固定文言を、例えばこのように、リソースIDで参照します。

<body>
	<bean:message key="msg1.hello"/><br/>
</body>

msg1.helloというのが、メッセージリソースで定義したIDです。
リソースファイルに、
msg1.hello=こんにちは!
このように定義しておきます。
これで1つのJSPで他言語、国際化対応したビューが作成できます。

メッセージの一部を動的に埋め込むことも可能です。
メッセージリソースに、
msg1.time=現在時間は'{0}'です。
このように定義し、JSPでは次のように記述します。

	<bean:message key="msg1.time"
		arg0="<%= new java.util.Date().toString() %>" /><br/>

これで、{0}の部分に、arg0で指定された文言が埋め込まれます。この例では、現在日付が文字列として、埋め込まれます。

サンプルプログラムはStrutsMsg-1.zipです。(下のダウンロードボックスから、下にスクロールしてください)

今回紹介したメッセージの機能はとても単純でした。
次は、Action側のビジネスロジックで、メッセージを作成するパターンを紹介します。


Strutsメッセージのまとめ-(1)」への2件のフィードバック

  1. こんにちは。
    質問がありますね。
    MessageReosurces_ja_JP.propertiesファイルが何処にありますか。

    以上/宜しくお願い致します。

  2. >MessageReosurces_ja_JP.propertiesファイルが何処にありますか
    初めからは存在しません。その言語のリソースが必要なときに自分で作成してください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)