-値反映の方法
過去のBLOG、
http://d.hatena.ne.jp/masataka_k/20051018/1129598469
http://d.hatena.ne.jp/masataka_k/20051018/1129646946
http://d.hatena.ne.jp/masataka_k/20051019/1129714580
http://d.hatena.ne.jp/masataka_k/20051020/1129792024
http://d.hatena.ne.jp/masataka_k/20051021/1129890029
http://d.hatena.ne.jp/masataka_k/20051023/1130061202
と、JSR252とTapestryのフォーム入力をDTOに値反映させる方法について書いてたところ、Tapestryをやらずに終えてました。Tapestryは5.*系がスタートしているのでまた様子が変わるかもしれませんが、JSR252とTapestryについてショートコメントにまとめると以下の感じです。
JSR252およびTapestryがそれぞれ工夫しているのは、画面にループがあり、それとフォームが組み合わされた場合のことを考えてのことです。このへん、もっとうまくならないものかなと。JSR252では毎度巨大にもなりうるコンポーネントツリーを作っちゃうし、Tapestryは二度描画という奇想天外な技を使えるのもWEBテンプレとWEBミドルをセットにしているからなんですが。。。ということで、Ikushipeのアーキテクチャでは以下のように考察。
- JSR252のUIComponentのツリーを作るみたいな動きはどうも痛い。ひがさんが何か考えているみたいなので、これの破壊的ソリューションをTeedaに期待。が、私には思いもよらん。
- Tapestryの2度書きを、WEBミドルのみでやる方法を考えてみる。JSR252でのViewHandlerでJSPエンジンをHttpServletResponseをラップして出力を食ってるようにして、2度書きをやるか(念のため。JSR252はJSPは1度書きです)?
- ループのコンポーネントを細工して、パラメータにインデックス情報を埋め込んでみる(これがIkushipeのこれまでのバージョン)
Tapestryライクな2度書きかな。。。これの欠点はコンポーネントに難しさが行って、量産が効かなくなるのですが。。。ClickやStripesなど最近のものは見れてないので、参考に研究してみたいとも思ってます。
追記
もう一個。
- JSR252風のバリエーション
- JSR252風に初回描画時にサーバ上にUIComponentみたいなもののツリーを作る。
- けどツリーに作るのはDTOとバインドしたフォーム関連のもの&ループ情報だけ。
- UIComponentみたいなものは値のやり取りだけで、描画は受け持たない。
- フォーム入力が送信されてきたら、ツリーを通して値反映を行う。
- 普通に描画する。
2度書きよりはこっちがよさそう。。。