shinya okino
shiny****@gmail*****
2009年 5月 17日 (日) 00:40:03 JST
沖野です。 おそらくはページのシリアライズ・デシリアライズでModelObjectが別インスタンスに なっているのではないかと思います。 毎回セッションからModelObjectを取り出さないとうまくいかないと思います。 違う要因だったらすいません。 2009/05/15 10:19 fukumitu <fukum****@beat2*****>: > はじめまして。 > 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 mailing list > Wicke****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > -- 沖野信也 shiny****@gmail*****