1

アクション メソッドの結果を 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");
4

1 に答える 1