MyFacesにパッチを当てて文字化け解消

拡張機能のフィルタorg.apache.myfaces.component.html.util.ExtensionsFilterから呼ばれているAddResourceクラスにあるメソッドwriteWithFullHeaderの中にこんなところがあった。

PrintWriter writer = response.getWriter();

文字エンコーディングを指定せずにPrintWriterを取り出しているので,プラットフォームデフォルトになってしまう(と思う)。そこで半分勘でこんな感じに修正。

response.setCharacterEncoding(request.getCharacterEncoding());
PrintWriter writer = response.getWriter();

ServletResponseにsetCharacterEncodingできるようになったのはServlet 2.4から。しかたないので新しいjarをリンクしてビルド。これで文字化けは解消したように見えます。Servlet 2.3以下じゃ使えなくなっちゃったけど...