PrimeFacesのファイルアップロードでパラメータが文字化けする件

(2013/4/6 追記:PrimeFaces3.5では、そのままFileUploadFilterを使ってよいようです)


PrimeFacesでファイルアップロードするときは、FileUploadFilterというのを組み込まないといけないのだけど、それだけだとファイル以外のパラメータでの日本語が文字化けしてしまう。
ファイル名は化けないのだけど。


同じことで悩んでる人もいた。報告をしてるっぽい。
http://stackoverflow.com/questions/11190081/primefaces-fileupload-filter-with-utf8-characters-filter


Commons FileUploadがファイル以外のパラメータの値でエンコード変換してくれないのが悪いのだけど、そうも言ってられないので、対策する。
FileUploadFilterをまるっとコピーして、エンコード変換したMultipartRequestを渡すという作戦。ただ、ここでMultipartRequestのaddFormParamがprivateなので、publicになってる値の取得メソッドに細工した。
このフィルタの前に、SetCharacterEncodingFilterっぽいものでエンコーディング指定しておく必要がある。
とりあえずGlassFish3.1.2.2+PrimeFaces3.4.2で確認。

続きを読む