- PR -

JSF 画面遷移(URL)が変?

投稿者投稿内容
トリックスター
大ベテラン
会議室デビュー日: 2003/04/16
投稿数: 104
投稿日時: 2005-11-22 12:39
「javax.faces.STATE_SAVING_METHOD」に「client」を
設定すると、戻るボタンの動きが改善されました。
これで、私の思い通り動いてくれています。ありがとうございました。
ただ、リダイレクトの件もそうですが、副作用的なものがあるかも
知れませんので、もうちょっとよく検証してみます。
数々の調査情報ありがとうございました。

以下、メモです。
====
「javax.faces.STATE_SAVING_METHOD」に「client」を
設定すると、下記例外が発生した。
----
javax.faces.FacesException: org/apache/commons/codec/binary/Base64
org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:410)
org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:244)
org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:290)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:110)
----
ログには、
----
java.lang.NoClassDefFoundError: org/apache/commons/codec/binary/Base64
----
と出ていたので、commons-codec.jarを追加した。
よしだひろゆき
大ベテラン
会議室デビュー日: 2004/11/22
投稿数: 141
投稿日時: 2005-11-22 14:13
引用:

ただ、リダイレクトの件もそうですが、副作用的なものがあるかも
知れませんので、もうちょっとよく検証してみます。


clientメソッドを使うと,コンポーネントツリー全体をエンコードしてブラウザにhidden
フィールドとして送ります.Sunの参照実装では,faces.VIEWという名前のhiddenフィールド
に設定されます.サイズを測定してみましたが,一つのformの中にinputText一つと
commandButton一つで2.3KByteの文字列がブラウザ・サーバー間を往復します.
また,参照実装の場合(MyFaceも?)単純なBASE64のエンコードなので,セキュリティの
観点からはイントラネットでしか使えないだろうと考えています.
henachoco
常連さん
会議室デビュー日: 2005/11/21
投稿数: 29
お住まい・勤務地: 新ハンドル:t_yamo
投稿日時: 2005-11-24 12:55
引用:

よしだひろゆきさんの書き込み (2005-11-22 14:13) より:
サイズを測定してみましたが,一つのformの中にinputText一つと
commandButton一つで2.3KByteの文字列がブラウザ・サーバー間を往復します.
また,参照実装の場合(MyFaceも?)単純なBASE64のエンコードなので,セキュリティの
観点からはイントラネットでしか使えないだろうと考えています.



私も当初セキュリティが心配でserverモードを使っていたのですが、考えてみたらコンポーネントツリーをセキュアにする必要はあまりなさそう(大抵、重要な入力値チェックはアクション処理部分で実行するし、秘密の情報はコンポーネントツリーに入れない)ということで、今は「戻る」を許可するタイプのシステムでは基本的にclientモードを使うようにしています(「戻る」不許可の場合はserverモードですが)。

あと、シリアライズしたものをBASE64でそのまま吐き出しているのはサイズの面でかなりトホホな実装ですが、JSF1.2PRのNightly SnapshotsをみるとZip化しているようですので、そのうちMyFacesのJSF1.1実装でもサポートしてくれるかもしれません(MyFaces宛にレポートを出さないとだめかな?)。
(余力があるのなら自分でRenderKitを差し替えるという方法もありますが)

-----
下記URLから「Nightly Snapshots」の「stable」の「JSF 1.2 milestones」と辿るとJSF1.2のマイルストーンごとの実装を取得できます。現時点では「Public Review」の仕様に対応したものが最新のようです。
https://javaserverfaces.dev.java.net/

補足:上記のjava.netはブラウザの言語設定で英語を最優先にしてあげないと化け化けになります。特にCDDL(COMMON DEVELOPMENT AND DISTRIBUTION LICENSE)の受諾ページやSVNリポジトリを表示する際に障害が発生します。

[ メッセージ編集済み 編集者: henachoco 編集日時 2005-11-24 13:03 ]

スキルアップ/キャリアアップ(JOB@IT)