RicoのAjaxEngineを調べる
仕事でオペレータさんが使う運用ツールの改善要望事項リストなんてものを見ながら、ふと思い立ってRicoのAjaxEngineを調べてみた。
基本的には Viewのロジックをクライアント側のJavaScriptで処理する形のものと、サーバーからXHTMLが含まれたXMLを返却して、自動的にdivとかspanの中身をごっそり変更するものと二つあるみたい。どちらも選べるのはうれしい。
XHTML含みのものを返却してRicoが自動的にinnerHTMLを変更する仕組みの場合はXMLのドキュメントタイプも指定されている。ちょうどXHTMLをRicoが指定する様式で囲ったような形なので、これもテンプレートなんかで生成できるはず。
とすると、たとえばHTML断片を返却するActionと.jspやvelocityやhtml(テンプレートも含む)をまるごと包んで返却するServletFilterとか作れそう。HttpServletResponseWrapperを使い、とりあえず出力されたものをすべて受ける。フィルタでRicoのお好みの形式にラッピング/変換して text/xml として返却する。すると、Actionとかビュー側は何も変えずにAjax化できる…と。なんか面白いかも! と思ったけど、そこがシームレスになっても実はあんまりうれしくないか?? 非同期で置き換わる領域に入るUI要素って、設計時点である程度意識しないとダメだから…
どんな利点があるかな...? と考えてみると
- Ajaxで動的に更新される領域を作り出す Action/HTMLやテンプレート のテストを独立して行える
- ふつーにAction/HTMLとしてテストする
- 完成!したら Filterをぶちこんで Ajax-responseで包む
- Actionやテンプレートが text/xml で Ajax-responseなXMLを意識(依存)して作られているとこうはいかんので
ぐらいはありそう。
Rico使うことになったら作ってみよう…なんかすでにありそうだけど、それはそれとして。