はじめに
AJAX(Asynchronous JavaScript and XML)テクノロジは、Webアプリケーションのユーザーインターフェースの使い勝手と柔軟性を高め、使用する帯域幅を最小限に抑えることのできる技術です。AJAXはJavaScriptとドキュメントオブジェクトモデル(DOM)とXMLHttpRequestに基づいており、Webページをサーバに送信することなくブラウザとサーバとの間で動的にXMLを転送できるWebテクニックとして使われています。
AJAXの「A」にあたる「非同期(Asynchronous)」という用語には、サーバ上でXMLHttpRequestを処理してブラウザクライアントに応答を返すまでの間も、Webページの処理が継続して行われるという意味が含まれています。AJAXは、オートコンプリート機能(1つのフィールドに入力が行われたときに、対応する既存の情報をフォームに自動的に読み込む機能)、動的フォーム検証、Webページ全体の再読み込みを必要としないページセクションやページ領域の定期的な更新など、さまざまな機能に応用されています。
JSF(JavaServer Faces)テクノロジは、J2EE(Java 2 Platform Enterprise Edition)アプリケーションのフロントエンドであるユーザーインターフェース(UI)を開発するための一連のコンポーネントを提供します。Ajax4JSFというオープンソースフレームワークを使用すると、JavaScriptを必要とせずにJSFアプリケーションにAJAX機能を追加できます。
Ajax4JSFのコンポーネントライブラリを使用すると、JSFページ全体でAJAX機能を利用できるようになります。Ajax4JSFは、アクションと値の変更リスナに加えて、JSFフレームワークのサーバ側検証および変換機能をサポートします。また、イメージやカスケーディングスタイルシート(CSS)などの静的および動的リソースの管理と、Faceletsフレームワークもサポートします。Ajax4JSFを使用するには、次のツールをインストールしておく必要があります。
- JDK 1.4~1.6
- JSF 1.1または1.2
- J2EEアプリケーションサーバ(WebSphere 5.1~6、WebLogic 8.1~9.0、Oracle OC4J 10.1.3など)
- XMLHttpRequestをサポートするブラウザ(Internet Explorer 6以上、Netscape Navigator 6以上など)
ページ上のイベントによってAJAX要求が起動すると、ページの指定領域がAJAX応答で更新されます。
それでは、Ajax4JSFフレームワークについて詳しく見ていきましょう。「web.xml」ファイルにはJSF要求とAJAX要求を区別するAjaxフィルタが登録されています。JSF要求の場合は、JSFページ全体がJSFコンポーネントツリーと同期します。これに対してAJAX要求の場合は、AJAX応答で更新されるのは<a4j:region>
で指定されるAJAX領域だけです。
ブラウザからサーバにAJAX要求を送信するには、AJAXアクションコンポーネント(AjaxCommandButton、AjaxCommandLink、およびAjaxSupport)を使用します。
Ajaxコンテナは、AJAX要求時にデコードされ、AJAX応答で更新されるJSFページ上の領域です。JavaScriptエンジンはクライアント側で実行され、AJAX要求に応じてJSFページのさまざまな領域を更新します。
Ajax4JSFには、JSFでAJAX機能を実装するためのコンポーネントライブラリが用意されています。表1に、よく使用されるコンポーネントを示します。
![Ajax4JSFコンポーネント Ajax4JSFコンポーネント](http://cz-cdn.shoeisha.jp/static/images/article/1616/1616_04.gif)