特殊文字(ö、ä.ñ、..)を入力すると、h:commandbuttonを介してPOSTされた値に問題があります。値がajaxリクエスト(値の変更リスナー、またはa4j:commandbuttonなど)を介して送信されると、すべてが機能します。ただし、値がh:commandbuttonを介して送信されると、受信した値が文字化けします。
BalusCの記事に従ってすべてを設定しようとしました。
JBossのstandalone.xmlでURIencondingを設定しました:
<property name="org.apache.catalina.connector.URI_ENCODING" value="UTF-8"/>
<property name="org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING" value="true"/>
リクエストの文字エンコードを設定するフィルターを追加しました。ただし、これは何も変更しません。パラメータマップを取得する(エンコーディングを設定する前または後)と読んだ場合、パラメータはそこで混乱します。
私が見逃したものは他にありますか?
JBoss7.1.0と7.1.1およびrichfaces4.1.0で試しました。
編集:
ExternalContext#getRequestCharacterEncoding()がbeansアクションメソッドでUTF-8を返したとしても(コメントで尋ねられたように)、フィルターが問題であるように見えます。フォームがh:commandButtonを介して送信されるrequest.getCharacterEncoding()
と、追加したUTFフィルターのdoFilter()メソッドの先頭でnullが返されます。しかしrequest.parametersParsed
、すでに真実です。
値がajax経由で送信される場合、request.getCharacterEncoding()
すでにUTF-8です。
したがって、エンコーディングの設定が異なり、他のフィルターが既にパラメーターを解析しているように見えます。内の他の唯一のフィルターはrequest.context.filterConfigs
ですorg.jboss.weld.servlet.ConversationPropagationFilter
。さらに、Picketlinkはおそらくこの時点ですでにパラメータを読み取っています。
編集2:PLフォーラムの このスレッドで説明されているように、これはPicketlinkのバグのようです。関連するPLの問題も確認してください。