日本語を処理するための設定

Struts1ではServletFilterで文字コードを指定するのが普通でしたが、Struts2ではstruts.propertiesにencodingとロケールを正しく指定します。指定した値を使ってorg.apache.struts2.dispatcher.FilterDispatcherがRequestを処理してくれます。

struts.locale=ja_JP
struts.i18n.encoding=UTF-8

なおstruts.xmlでも以下のように定義できると思っていましたが、なぜか2.0.6では有効になりませんでした。

<constant name="struts.locale" value="ja_JP" />
<constant name="struts.i18n.encoding" value="UTF-8" />

こんなWARNINGが出力されます。
なおweb.xmlにFilterDispatcherの初期化パラメータとして定義しても同じ結果になりました。

2007-03-19 20:20:24,323 WARN [main][org.apache.struts2.config.Settings] - Settings: Could not parse struts.locale setting, substituting default VM locale

struts.propertiesがstruts.xmlに優先するようなので、struts.propertiesに定義しておけば問題ないでしょうけど。