JSFアプリケーションの国際化 Wiki

JJBug (Japan JBoss User Group: 日本JBossユーザ・グループ) のプロジェクト Wiki ページへようこそ。

【作成中のドキュメント】


1. JSF 1.2準拠のJSFアプリケーション

(1)Sun JSF 1.2 RIがマルチバイトの文字列をすべて数値文字参照(文字参照)にエンコードして返す問題
「JBossSeam-2.0.x」(実は「JBoss AS 4.2.x」)で日本語を含むマルチバイトの文字列を扱う上で課題として、 「JBoss AS 4.2.x」が採用している、JSF 1.2の実装「Sun JSF RI 1.2_0x」がマルチバイトの文字列をすべて、 数値文字参照(文字参照)にエンコードして返すと問題があります。
これが、Ajaxとの連携など含め、様々な文字化けを起こすことが分かっています。(特にShift_JISベースの場合) 実体参照が、そのまま数値のままブラウザ画面に表示され、文字化けが発生したかのような画面になったり、実体参照が 再度サーバ側に送信されて、本当の文字化けになりします。

この問題に対応するには、いくつかの対応策が考えられます。

(a)Sun JSF 1.2 RIで実装されている標準実装のRenderKitを独自実装のRenderKitに置き換える。
(b)Servlet Filterで置き換える。Filterで数値文字参照となっている文字をバイナリ文字に戻し、レスポンスに書き込む。
(c)Sun JSF 1.2 RIにQuickHackのパッチを適用する。


この課題に対処するために「JBoss AS 4.2.2」に同梱されている「Sun JSF RI 1.2_04_p02」のソースの com/sun/faces/util/HtmlUtils.java に、QuickHackのパッチを加えて、2バイト以上の文字を実体参照で返さないようにしたJSF実装を利用すると、「実体参照」関連 の文字化けの多くが回避できるので、テストドライバとして、Sun JSF RI 1.2_04_p02」のマルチバイト非実体参照版 も作成したので、公開します。

参照: 文字参照 http://ja.wikipedia.org/wiki/%E6%96%87%E5%AD%97%E5%8F%82%E7%85%A7

参照: Java Server Faces(JSF)で携帯ページ http://www.utilz.jp/wiki/JSFNcr

(2)ICEfaces 1.6.xがUTF-8でエンコードされたレスポンスしか返さない問題

  • JSF 1.2の実装を利用する場合の注意点(B)
    (B) Apache MyFaces http://myfaces.apache.org/

    JBoss 4.2.xにバンドルされているJSF 1.2の実装Sun JSF 1.2 RIをMyFaces Core 1.2に置き換えて、
    JBossSeam 2.0.xのアプリケーションを動作させる方法は、現時点では不明です。


2. JSF 1.1準拠のJSFアプリケーション


3. JSF 2.0準拠のJSFアプリケーション