Tsutomu Yano
benbr****@mac*****
2008年 12月 8日 (月) 22:39:21 JST
On 2008/12/08, at 10:17, Susumu ISHIGAMI wrote: > モデルを工夫して使って、できるだけ既存のコンポーネントに手を加えないというのは、Wicketではスマートな方法となのですね。 > > 初めはなんて強引で遠回りな、と思ったのですが、矢野さんのコードそうなっていたので、安心しました。 > んーそうですね、ここはWicketの特徴的な部分でしょうね。 「値を保持しているのはコンポーネントではない」というのはWicketの特徴的な部分ですね。かといってModelでも なくて。 ・コンポーネントはタグの生成が役割 ・モデルは「値がどこにあるか」を知っているロケータ(Locator) ・値はモデルがどっかから取ってくるので、どこにあってもいい この仕組みのおかげで、コンポーネントをデータベースや外部リソースやプロパティファイルなどなど、 いろんなものに結合できるんですね。コンポーネントから見れば、モデルがどっかから値をとってきてくれるので。 というわけで、今回のような目的でも、コンポーネントがほしいCollection<String>がどこにあるのか、 どうやって取得できるのかはモデル、ということになります。 実際、今回のプログラムは、モデルを差し替えるだけで、カンマ区切りの文字列以外の実装に差し替えられる わけです。極論すれば、モデルがデータベースとやりとりしても、コンポーネントは何も知らずに動く。 モデルはねえ、たしかにちょっと説明しにくいんですが、これがないとWicketのいいところがごそっと なくなってしまいますからねえ。 私は、Wicketでは、モデルの概念が一番のカギになるかなーと思ってます。 --------------------------------------------------- 矢野 勉(やの つとむ) 電子メール:benbrand_at_mac.com ---------------------------------------------------