アクション メソッドの結果を UTF-8 にエンコードする際に問題があります。
Glassfish 3.1.2 は UTF-8 に設定されています。<parameter-encoding default-charset="UTF-8"/>
次の UTF-8 でエンコードされた URL をブラウザーに入力すると、Bean/コンバーターで正しくデコードされたビューパラメーターが取得されます。
/sites/foo.xhtml?paramKey=Getr%C3%A4nke
->/sites/foo.xhtml?paramKey=Getränke
Getränke
バッキング Bean で正しく取得され、コンバーターは正しいオブジェクトを取得できます。
問題:
コマンド コンポーネント ビュー パラメータによって呼び出される Bean メソッド内で、返されるターゲット ビュー ID に追加されます。
public String action()
{
return "/sites/foo.xhtml?paramKey=Getränke&faces-redirect=true";
}
リダイレクト後に UTF-8 エンコードではなく、ISO-8859-1 エンコードされた URL になります。
/sites/foo.xhtml?paramKey=Getr%E4nke
どこかで UTF-8 を定義し忘れていませんか?
または、結果を手動で UTF-8 にエンコードする必要がありますか? 奇妙なことに、基本的なリンクなどは正常にh:link
機能します。
システム:
Glassfish 3.1.2 Mojarra 3.1.23 Primefaces 3.5f Omnifaces: 1.6 スナップショット
注: これも削除するPrettyURL
か//Rewrite
、これが理由ではないことを確認するためのテスト用です。
注: テスト用に、次のフィルターも追加しました。
if (request.getCharacterEncoding() == null)
response.setCharacterEncoding("UTF-8");