マネージドビーンのスコープについて

<< 戻る   トップ >>

開始レコードと表示するレコード数を入力するフォームをシンプルなページャと言ってよいのか。人間様が開始ページにレコード数を足したり引いたりして入力すればページャとして動作するのでシンプルというより野蛮なページャと呼ぶべきであろう。あるいはページャ一歩手前か。この人間様の計算作業を進む (next) 戻る (previous) ボタンで行うようにすれば、とりあえずブレーキのない、今度こそシンプルなページャができあがる(はずである)。

ところがここでも一つ疑問がある。シンプルなページャでは開始レコード・レコード数を表示する必要はないから、<h:inputText> はいっそなくしてしまいたい。マネージドビーンに変数だけがある状態にしたいのだ。そうなるとマネージドビーンのライフサイクルが気になる。今のところ、ライフサイクル (スコープ) はデフォルトの "Request" を用いている。この状況で、例えば firstRecord の値を <h;inputHiedden> などに保持しなくても良いのだろうか。それでは実験してみよう。

まず、スコープ Request で、<h:intputText/> も <h:InputHidden/> もなしでやってみよう。予想通り、失敗する。値を保持できないのだ。一方、<h:inputHidden/> を使えば問題がなくなる。また、スコープをちょっと広げて @SessionScoped にしても大丈夫だ。

<h:inputHidden/> を採用すべきか、@SessionScoped を採用すべきか。サーバの資源保護の観点からは @RequestScoped + <inputHidden/> が求められる。ただ、この組み合わせにはもうひとつ懸案がある。データを保持し続けることができないのか、一定時間経過後、更新するとエラーが発生するのだ。そのエラーが @SessionScoped で発生しないのかというところはこれから試すことになる。ただ、なんとなく @SessionScoped を用いる方がエラーを起こさずにすむような予感がする ー 正統性があるように思えるのだ。


作成: 2014-06-05 00:01:01.0更新: 2014-06-05 00:01:01.0
http://museo-anonimo.jp/nanban/?id=1279,http://museo-anonimo.jp/nanban/tr/1279