ModelGlue1.0.01の新機能
ModelGlue1.0.01の新機能について、ドキュメントの該当部分を和訳したので紹介しておきます。
1.ステートフルResultリダイレクト <result name="xxx" do="yyy" redirect="ture" append="zzz" />
2.ステートフルフォワーディング arguments.event.forward( )
■クイックスタート: ステートフルResultリダイレクト
しばしば、あるフォームがポストされたときに、"Reload"によってユーザがフォームをリポストすることを防ぐために、新しいページへのCFLocation を行うことが定例化しています。Model-Glue1.0 では、ModelGlue.xml ファイルを通じてこの動作を模倣することが可能になりました。
どのような<result>タグにも、REDIRECT属性を追加することができるようになりました。REDIRECT="true"にセットされている場合、フレームワークはすぐ現在の要求を停止し、すべての変数値を維持しながら、あらかじめ設計された<event-handler>へのサーバーサイドリダイレクトを実行します。
URL のparamaters を含んでいるページにリダイレクトしたいと思うことはかなりありうることです。例えば、誰かがコンテンツ管理システムのあるセクションに新しい記事をポストしたら、"index.cfm?event=showSection§ionId=12345" のようなURL に遷移することを望むはずです。しかしながら、resultタグ上のREDIRECT属性は、url に追加すべきの"sectionId" 変数の値を知る方法がありません。この理由のために、オプションとしてAPEND属性が今回サポートされました。それは、変数コレクションをURLに追加するために、コンマ区切りの変数リストを含まなければなりません。フレームワークはURL に自動的にこのリストの単純変数すべてを追加します。
オーケー、それでは簡単なサンプルを見てみましょう:
<result name="articleAdded" do="showSection" redirect="true" append="sectionId">
全然OKでしょう?
■クイックスタート: ステートフルフォワーディング
行くためにどうしてもどこに知らない時があります。例えば、"ポッド" の中にあるフォームは、何かを行い、そしてどんなイベントから来たかユーザに示すことが必要になるでしょう。<result>タグを書くとき、"do"属性を動的にセットする方法はありません。
このような特別な事例のために、(arguments.event として知られている) EVENTオブジェクトは、Forward()メソッドを実装しました。このメソッドの使用方法は、次のようになります:
arguments.event.forward(<event-handler>名) - 直ちに指定された<event-handler>へのステートフルリダイレクトを実行する。arguments.event.forward("showSection ") は、index.cfm?event=showSection と同等です。
arguments.event.forward(<event-handler>名, append) - 直ちに、appendで与えられる変数コレクションをURLに追加しながら、指定された<event-handler>へのステートフルリダイレクトを実行します。arguments.event.forward("showSection" , sectionId )は、"12345" という値を有するsectionIdという変数コレクションを与えられた、index.cfm?event=showSection§ionId=12345と同等です。
コメント