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/xmlAjax-responseなXMLを意識(依存)して作られているとこうはいかんので

ぐらいはありそう。

Rico使うことになったら作ってみよう…なんかすでにありそうだけど、それはそれとして。