« イベントの続きと、viewstate | メイン | とりあえず、動くもの »

viewstate と viewcollection

前回、viewstate というものの読み解いた。似たような単語で、viewcollection というものがある。
前者が view の state 状態ということであれば、後者は、view の集合となるのだろうか。余計わかりにくいか。

画面表示プログラム上で、viewcollection.getView("body") としてやることで、画面表示を埋め込むことができる。
event-handler => views の要素、include で画面に埋め込むプログラムを設定する。
<include name="body" template="dspCart.cfm" />

viewcollection.getView("body") に、dspCart.cfm が埋め込まれるわけである。

viewcollection.getView("body")この記述は、event-handler の results => result 要素で生成した画面上でしか、
機能しなかったが、実際のところは、どうなのだろうか。
動いてくれると、便利なんだが。

コントローラーから画面に値を渡す場合は、どうなるのか。
viewstate で受け取れるようにする方法である。
<cfset arguments.event.setValue("cartData", cartData) />
こうすることで、cartDate という変数の cartDate という値を渡すことができる。
arguments.event というのは、重要な概念で、HTTP でいうところのイベントを意味している。
これは、リクエストも、レスポンスも含んでいるようである。

つまり、レスポンスで画面に値を渡すわけであるから、レスポンスというイベントに値を設定(setValue)するということである。

わかりにくいかもしれないが、ポストリクエストのポストデータを受け取るときも、このイベントを利用する。
<cfset var itemId = arguments.event.getValue("itemid") />
こうすることで、フォームの itemid という値を取得することができる。

このイベントは、コントローラー上でのみ、扱える空間のようだ。
もちろん、引数などで渡してやれば、どこでだって使えるのであるが、コントローラー上では、イベントを受け取ることを
書いてしまえば、受け取ることができる。
他にも、コントローラ上でのみ扱える ModelGule API とか、コントローラーは、いろいろ便利に使えるようである。

トラックバック

このエントリーのトラックバックURL:
http://www.schwarzmond.info/mt/mt-tb.cgi/43

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2008年04月18日 09:56に投稿されたエントリーのページです。

ひとつ前の投稿は「イベントの続きと、viewstate」です。

次の投稿は「とりあえず、動くもの」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。