[Wicket-ja-user 329] ページのステートとセッションオブジェクトについて

Back to archive index

fukumitu fukum****@beat2*****
2009年 5月 15日 (金) 10:19:01 JST


はじめまして。
fukumituと申します。

いつもはROM専門だったのですが、どうもいい考えが思いつかないのでMLに投げさせて
いただきます。

現在、wicketを使用して複数の入力ページと内容確認表示ページがあるWEBアプリを
作成しておりますが、「ブラウザの戻るボタンにも対応している」と聞いていたので
色々調べていました。

・入力用のFormビーンは、セッション上に保持しています。
・Submitは使用せず、AjaxFormChoiceComponentUpdatingBehaviorや、AjaxFormComponentUpdatingBehaviorを用いて
 直接 ModelObject(Formビーン)に設定しています。

入力画面がA,B,C、確認画面がDとした場合、正しいルートで
(1)A(次へ)→(2)B(次へ)→(3)C(次へ)→(4)D(修正)→(5)B(完了)→(6)Dとした場合、
「ブラウザの戻るボタン」で(2)まで戻った場合、(5)で入力した内容が表示されません。

ここまではブラウザのキャッシュが表示されている為想定通りですので問題はありませんが
この時点でセッション上のFormビーンと画面上の差異が発生しています。

さらにこの(2)Bでさらに変更し、(次へ)でDまで到達すると一見、正しくFormビーンに
値が入ってはいるのですが、Dでは変更前の値が取得できてしまいます。
getSession()を調べてみたところ全然違う物を参照しておりました。
どうもTextFieldに入力した時点で変わっている様です。

推論なのですが、この時点で新たなステートが生成されていて以下のような感じに
なっているのかな?と考えました。

(1)A(次へ)→(2)B(次へ)→(3)C(次へ)→(4)D(修正)→(5)B(完了)→(6)D(戻る)→
(5)B(戻る)→(4)D(戻る)→(3)C(変更)→(7)C(次へ)→(4)D

そこで質問なのですが(前振り長くてごめんなさい)、
1.Wicket的にはステートフルを目指しているので、ステートフルな入力ページ情報は、
  基本的にページインスタンス変数に持つべきなのでしょうか?
2.その場合、複数ページにある入力情報へはどのようにアクセスするべきでしょうか?

以上、どなたかご存知であればよろしくお願いいたします。




Wicket-ja-user メーリングリストの案内
Back to archive index