Strutsで使用するメッセージリソースは、色々な機能から使用されるため理解するのが難しいことの1つだと思います。
さらに、Struts1.2からはメッセージ関係のAPIに仕様変更がありました。そのため今まで使っていた方式が非推奨になったりしています。
このような混乱の元をちょっと整理して、「Strutsメッセージのまとめ」として紹介します。
Strutsのメッセージリソースは、次のような機能から使用されます。
- JSPでの通常のリソース文言(国際化対応など)…まとめ(1)←今回
- Actionから通知される通常メッセージ…まとめ(2)
- Actionから通知されるエラーメッセージ…まとめ(3)
- validateでのエラーメッセージ…まとめ(4)
- validatorでのエラーメッセージ…まとめ(5)
準備として、リソースファイルについてについて説明します。
0.リソースファイルについて
リソースファイルは、propertiesファイルとして用意し、struts-configで設定します。
これで、クラスパス直下にMessageResources.propertiesというファイルがあればOKです。
パッケージをつけることも可能です。
→パッケージfoo.barに、MessageResources.propertiesを配置
上記の指定だけで、次のような他言語のリソースが使用可能です。
MessageReosurces.properties (既定のリソース)
MessageReosurces_ja_JP.properties (日本語リソース)
…その他のロケールのリソース
日本語リソースにない文字列は、既定リソースが使用されます。
ja_JPという部分は、日本語の日本という国を意味します。
※日本語=日本と言えますが、言語と国が1:1で一致しない国もあります。英語、カナダなど
こうすることで、(大雑把に書くと)Strutsは日本語ユーザーに対して、日本語リソースを使って表示してくれます。
リソースファイルの仕組みはSturtsに限った話ではなく、Javaの仕組みです。
Strutの仕組みは、クライアントのロケールにあったリソースを選択してくれることです。
このようなロケール選択の仕組みは、これから紹介するどの文言でも使用される仕組みです。
1.JSPでの通常のリソース文言(国際化対応など)
単純で分かりやすい使われ方です。
JSP内に直接、文言を記述してしまうと、他言語・国際化対応したアプリケーションを作る場合に都合が悪いです。
そのためJSP内の固定文言を、例えばこのように、リソースIDで参照します。
msg1.helloというのが、メッセージリソースで定義したIDです。
リソースファイルに、
msg1.hello=こんにちは!
このように定義しておきます。
これで1つのJSPで他言語、国際化対応したビューが作成できます。
メッセージの一部を動的に埋め込むことも可能です。
メッセージリソースに、
msg1.time=現在時間は'{0}'です。
このように定義し、JSPでは次のように記述します。
これで、{0}の部分に、arg0で指定された文言が埋め込まれます。この例では、現在日付が文字列として、埋め込まれます。
サンプルプログラムはStrutsMsg-1.zipです。(下のダウンロードボックスから、下にスクロールしてください)
今回紹介したメッセージの機能はとても単純でした。
次は、Action側のビジネスロジックで、メッセージを作成するパターンを紹介します。
こんにちは。
質問がありますね。
MessageReosurces_ja_JP.propertiesファイルが何処にありますか。
以上/宜しくお願い致します。
>MessageReosurces_ja_JP.propertiesファイルが何処にありますか
初めからは存在しません。その言語のリソースが必要なときに自分で作成してください。