Seamのページパラメーターに日本語を使うと文字化けする場合の対処方法
Seamの便利な機能のひとつとして、ページパラメーターという機能があります。pages.xmlでページパラメーターを指定しておくと、その画面に遷移するときに渡されたHTTPリクエストパラメーターを自動的に処理してBeanにバインドしてくれたり、逆にパラメーターを自動的URLにつけてくれます。
実は最新版の2.2.0のリファレンスマニュアル16.1.1に説明が書いてあるのですが、TomcatやJBossのデフォルト設定では、パラメーターに日本語等が含まれると文字化けします。これは、SeamがデフォルトでURLをUTF-8でエンコードするのに対して、TomcatやJBossがiso-8859-1でデコードすることによるものです。
たとえば、JBoss AS 5.1.0であれば、
[サーバーディレクトリー]\deploy\jbossweb.sar\server.xml
のConnector設定を以下のように変更する必要があります。
<!-- A HTTP/1.1 Connector on port 8080 --> <!-- <Connector protocol="HTTP/1.1" port="8080" address="${jboss.bind.address}" connectionTimeout="20000" redirectPort="8443" /> --> <Connector protocol="HTTP/1.1" port="8080" address="${jboss.bind.address}" connectionTimeout="20000" redirectPort="8443" useBodyEncodingForURI="true" URIEncoding="UTF-8"/>