Wicketで、現在のリクエストがポストバックされたものかどうかを調べていたのですが、、、
(いわゆる、.net で言うところの isPostBack プロパティ相当の機能です)
どうもプロパティという形では無いようです。
ただ、WebPageのコンストラクタが最初のリクエストのときにのみ呼ばれているようなので、この特性が変わりに使えそうです。
WicketのWebページの処理サイクル(ラウンドロビン)は、おそらく以下じゃないかと思います。
#ちゃんと調べてなくてすみません。
1.ユーザーがページを要求します。(Http Get)
2.
Wicket(Reqest Cycle)は、対象のWebPageのインスタンスを生成します。
3.レスポンスが返されます。
4.ユーザーによって、ページがサーバーにポストされます。(ポストバック)
5.
Wicketは、対象のWebPageのインスタンスをセッションから検索します。
#インスタンスが見つからない場合、期限切れ扱いとなります。
6.インスタンスが見つかった場合は、ページクラス上の各コンポーネントのイベントが呼びだされます。(onSubmit等)
7.・・・続く
#詳しい処理フローは、org.apache.wicket.request.AbstractRequestCycleProcessorのprocessEventsメソッド でデバッグすると参考になるかもしれません。
そうです。
Wicketは、セッションにページが保存されていることが前提でラウンドロビンを実行しているのです。(たぶん)
なので、処理の記述場所としては以下のようになるんじゃないかと思います。
・ページの初期化(初期表示)の情報は、WebPageのコンストラクタに記述する。
・ポストバックされた際の処理は、各コンポーネントのイベントに記述する。
うーん・・・。なるほどー。
大量ユーザーからのリクエストさばこうとしたら、メモリ不足にならないのだろうか・・・。
あと、戻るボタン対策とかどうなってるんかな・・・。
テーマ:
プログラミング
- ジャンル:
コンピュータ