AJAX 対応の JavaServer Faces コンポーネントライブラリを使用したアプリケーションの作成

Yutaka Yoshida
ステータス: Early Access

課題

このドキュメントでは、AJAX 対応の JavaServer Faces コンポーネントライブラリを使用してアプリケーションを作成するときのプログラミングモデルについて説明します。Java EE アプリケーションで AJAX を使用するためのプログラミングモデルの 1 つに、一連の JSF コンポーネント内に JavaScript コードをラップしてから、これらの AJAX 対応の JSF コンポーネントを使用する方法があります。このようにすると、開発者は、通常の JSF コンポーネントライブラリと同じように AJAX 対応の JSF コンポーネントライブラリを使用できます。この方法には、JavaScript と AJAX の複雑さを意識しなくてよいというメリットがあります。たとえば、開発者は、Web アプリケーションで Java BluePrints AJAX コンポーネントライブラリを使用して、進捗バーや Google マップとのマッシュアップを追加できます。このプログラミングモデルでは、JSF コンポーネント内に AJAX コードをラップする作業がコンポーネント開発者の負担になり、コンポーネントライブラリを使用する開発者は Web アプリケーションを簡単に構築できるようになります。

対処法

一般に、AJAX 対応の JSF コンポーネントライブラリを使用する方法は、通常の JSFコンポーネントライブラリと変わません。JSF コンポーネントによって、要求 (この場合は XMLHttpRequests による) が処理され、ブラウザクライアントに応答が返されます。AJAX 対応の JSF コンポーネントの場合は、返される応答が、ブラウザで実行できる JavaScript コードフラグメントであったり、表示用の HTML またはデータであったりします。それでは、AJAX 対応の JSF コンポーネントライブラリを Web アプリケーションで使用する方法を見てみます。 
一般的な JavaServer Faces カスタムコンポーネントライブラリの jar は図 1 のような構造になっています。
コンポーネント構造
図 1: 一般的な JavaServer Faces コンポーネントの構造

図 2 に、tld と jsp ページの関係を示します。カスタムコンポーネントでは、Web アプリケーション開発者は、タグライブラリ記述子 (*.tld) と次の情報に注意する必要があります。
  1. Web アプリケーションの JSP ページでタグライブラリを指定する <uri>。
  2. タグの名前と関連付けられている属性。タグライブラリの javadoc がある場合、開発者は tld ファイル内の xml を読む必要はありません。
tld と jsp の関係
図 2: TLD と JSP の関係

図 1 と 2 に示すように、AJAX 対応の JSF コンポーネントを使用する方法は、通常の JSF コンポーネントとほとんど同じです。JSF コンポーネントライブラリを使用して Web アプリケーションを開発する際に開発者が注意しなければいけないことは、JSP ページで正しいタグライブラリ記述子を記述するということです。1 つの Web アプリケーションで複数の JavaServer Faces カスタムコンポーネントを使用するときは、tld でコンポーネントごとに異なる <uri> を指定し、これらを JSP ページに正しく組み込む必要があります。もう 1 つ注意しなければならないことは、バッキング Bean を使用して <ui:custom value="#{bean.abc}"></ui:custom> と記述するときは、コンポーネント内のタグハンドラクラスとレンダリングを ValueBinding クラスを使用して適切にコーディングする必要があるということです。

図 3 に、特に複数の JavaServer Face カスタムコンポーネントを使用して Web アプリケーションを開発するときに重要な要素を示します。
tld と jsp の関係
図 3: TLD および faces-config.xml 内の重要な要素

参考資料

次の資料も参考にすることを推奨します。


© Sun Microsystems 2006. Java BluePrints Solutions Catalog の内容はすべて著作権保護されており、サン・マイクロシステムズ社の書面による許可なしに他の著作物に発表することを禁止します。