NetBeansでVisual Web ICEfacesを使う場合「現時点」でのベターな設定。
com.icesoft.faces.standardRequestScope
はtrueにしたほうがよいくさい。ここはNetBeansがICEfacesフレームワークを使うとデフォでfalseにしてくれてる。
ICEfaces単体ならばfalseのほうが開発をさくさく出来るのだが、Visual Webで開発する上で重要なモデルの動的変更等をすると問題が出る。JSP上でvalue等プロパティを適切にバインドしておくとデザイン時に不具合が出やすいので、実行時に設定をするということがVisualWebを扱う上での常識というかコツなのだが、そうするとコンポーネントツリーの矛盾が出るのかエラーが出てしまう。
よくよく考えるとテーブルは元々セッションスコープにいれておくのがJSFの流儀だし、同様に動的な動きをするTreeもセッションに入れておくことを意識したほうがいいのかもしれない。よくあるアクションベースのWEBアプリは画面遷移のたびにDBアクセスが入るのはDB鯖の負荷ばかりかかって望ましくないため、意識的にセッションスコープに画面を割り付ける…ということになるのだが、そうなるとページBeanの位置づけがかなり微妙になるようなならないような。
フルAJAXなICEfacesではページbeanに画面のものはすべて紐づくほうがわかりやすいと思うのだが、モデルの動的変更部分まじめにしらべてみよう。うまくいけばfalseのままいけるはず。いや、別に不真面目なつもりはないのだけれども。
あと当たり前だけどいわゆるリバースAJAXも普通に使えるようにできてる。例えばボタンをクリックしたらラベルが1秒ごとに1から100までカウントアップしていく、ということが容易に可能。ここはすべてAJAXで変更点のみ通知するICEfacesと相性抜群というわけだ。あとでこの辺のコードもさらそう。英語のドキュメント読めないので間違ってるかもしれないけど、Javaのコードは読めてるからたぶん大丈夫・・・だと思う。むしろさらすことで間違っていた場合間違ってると指摘が欲しい。(^-^;)