プロパティファイルの参照順序
先ほど、プロパティファイルを「Actionクラス名.properties」とすると書きましたが、他の名前にすることも可能です。また、別のディレクトリに配置することもできますので、必要に応じてプロパティファイルの適応範囲を広げることができます。
また探索順が決まっているので、複数ファイルに重複したキーが存在していても問題ありません。参照の優先順位に従って値の取得が行われます。
プロパティファイルの設定の仕方は、Struts 2のドキュメントに細かく記載されています。とはいえ、以下のケースだけ頭に入れておけば十分ではないかと思います。優先度を高い順に並べると次のようになります。
- 1. Actionクラス名.properties
- 2. Actionクラスの基底クラス名.properties
- 3. パッケージ内のpackage.properties
- 4. グローバル(struts.xmlで指定)
struts.xmlでの指定の場合、<struts>
タグ配下に、<constant>
を追加します。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.custom.i18n.resources" value="MessageData" /> <package name="HelloProject" extends="struts-default"> 以下省略
value
で指定するファイル名には、拡張子.properties
の指定は不要です。また、カンマ区切りで複数記述することもできます。キーが重複した場合は、後から記述した方が有効となります。
ただ、Windows-31Jの文字コードで表示・入力したい場合もあるかと思います。そのようなケースでは、前述のプロパティファイルの対応に加えて、Struts 2の設定プロパティの
struts.i18n.encoding
の値を変更します。「struts.xml」で変更する場合は、<constant>
タグを用いて、struts.i18n.encoding
の値を変更します。<struts> <constant name="struts.i18n.encoding" value="Windows-31J"/>