JBossSeamによる日本語対応アプリケーションの開発(基本編) Wiki

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

【作成中ドキュメント】

○Seam

JBossSeam 2.0.xの本体は、GETリクエストのURIに含まれるクエリ文字列に マルチバイトの文字列が含まれる場合、クエリ文字列をUTF-8でエンコード した上で、URLエンコードされたリクエストが送信されて来ることを想定し ています。 (jboss-seam-2.0.1.GA/src/main/org/jboss/seam/core/Manager.java参照)

これは、RFCの仕様上正しいのですが、古いバージョンのブラウザやWeb アプリケーションでは、ブラウザに送信されたhtmlドキュメントに指定 された、charsetをURLにもHTTPボディにも適用して送信するものがある ため、注意が必要です。

クエリ文字列をUTF-8でエンコードした上で、URLエンコードされたリク エストが送信されて来ることを想定してサーバ側で正しくURLデコード するためには、現行のJBoss AS 4.2やTomcat 5.x,6.xの場合、Tomcatの connecterの設定に   「URIEncoding="UTF-8"」 と追加設定する必要があります。

 

A)「URIEncoding="UTF-8"」と指定

・RFC仕様に従いUTF-8

・文字化けの問題が発生しないように、Seam以外のアプリケーションでも、GETリクエストのクエリー文字にマルチバイトの文字がまれる場合、  クエリ文字列をUTF-8でエンコードした上で、サーバに送信するようにする。  あるいは、GETリクエストのクエリー文字にマルチバイトの文字が含まれないようにアプリケーションを開発する。

・Seam以外の現行アプリケーションでも、GETリクエストのクエリー文字にマルチバイトの文字が含まれない場合には、  問題は発生しない。HTTPボディは適切にエンコーディングする。

 

B)「URIEncoding="Shift_JIS"」と指定

・過去のアプリケーションとの整合性から敢えてShift_JISに設定する。   ・既存のWebアプリケーションがGETリクエストのURIに含まれるクエリ文字列にマルチバイトの文字列が含まれる場合、クエリ文字列をShift_JISで  エンコードしている場合に対応。

・この場合は、Seamアプリケーション問題が発生しないように、PRGパターンにリダイレクト時のGETリクエストのクエリー文字にマルチバイトの文字が含まれないようにSeamアプリケーションを設計することで、文字化けの問題の発生を避けることができる。

C)その他 また、今後の検討事項として、過去の経緯から以下の仕様変更を提案を検討する

・jboss-seam-2.0.1.GA/src/main/org/jboss/seam/core/Manager.javaにおいて  Seamの仕様変更を依頼し、UTF-8固定でなく、Shift_JISにも設定可能なようにしてもらう。

○JSFレンダラキット

 ○JSFのレンダラキット

   ○RichFacesのレンダラキット   JSFの標準レンダラキットをそのまま利用するので、JSFのレンダラキットに依存する。        JBoss AS 4.2.xの場合、Sun JSF RIを利用しているのでSun JSF RIに依存する。

 ○ICEfacesのレンダラキット

  独自JSFのレンダラキットを使用しているが、このレンダラキットは、コンテンツのエンコーディングを   Webページのcharsetをハンドリングせずに、一律UTF-8の固定でエンコードするようなので、   現時点では、UTF-8のエンコーディングのアプリケーションしか開発できないようである。    書き出しはUTF-8、読み出しは??