プレーンなHTML+すべてAJAXによるデータのやり取り

以前にも書いたが、HTML+AJAXのみというのが気になって、ちょっとDWRをいじってやってみた。やっぱりDWRすごい。


素の状態だと本当に低レベルなので、これをかなり厚くラップしないといけないと思う。軽く便利になりそうなライブラリをこさえてやってみたが、思いのほか上手くいく。

まずなんといっても開発をするのにIDEの種類は関係ないし、軽さも圧倒的。既存のDIコンテナやフレームワーク等との連携機能があるけど、一番使うであろうscriptスコープというのが他のフレームワークには存在しないため、ここがつらいか。


なんとなく、今後の主流はこれになりそうな気がする。ファイルアップロード以外は問題なく出来るし、動作も軽い。FaceletやWicketは特殊な属性を埋め込むのでデザイナに削除されてしまう危険性も多いのだが、DWRは基本IDベースで扱うことになるために、DreamWeaverで普通に表示されるIDをどうセットすればいいのか指示してあげれば問題はない。

完全に静的なHTMLでもいいだろうけど、セッションの使い回しを減らすために初期化等でjspを使うようにしたほうが効率はいいかも。しかし、カスタムタグやロジック等が入るわけではないので、非常に見通しがよい。JSPDreamWeaverがサポートするためHTMLとの違いは感じないし。


ちなみに一番気合を入れてあげないといけないのがパラメータの取得方法。javascriptで書けばフォームのパラメータをいくらでも渡してあげることが出来るが、それだとjavascriptとの格闘が増えるだけで一番やってはいけないこと。Javascriptを一切書かないでJava側のコードだけでコントロールするしかないのだ。

そのためにはScriptProxyを積極的に使ったり作ったりするわけだが、これはパラメータを設定してあげることは出来ても取得が出来ない。scriptを作って毎回ページにインクルードさせるのも面倒に見えたので、思い切ってDWRからDWRを呼んでみた。

結果・・・成功。図にすると以下のようになる。つまり1回のクリック等イベントで2回コールしているわけだ。


Javascriptのコードを書かずにパラメータを取得することが出来た。あとはこれをBeansにセットしてあげるとか、さらに踏み込んでJSFコンポーネントバインディングのように扱いやすい形にするか。プレーンHTML+フルAJAXの未来は明るいなと思った。