ADF Facesのダイアログ・フレームワークについて

新しいページを、現行のページが表示されている同じウィンドウではなく、独立したポップアップ・ウィンドウ(ダイアログ)に表示する場合があります。ダイアログでは、情報を入力または選択したユーザーが、元のページに戻ってその情報を使用できるように設定できます。通常は、JavaScriptを使用して、ダイアログの起動やプロセスの管理を行い、ポップアップ・ウィンドウが特定のクライアント・デバイス(PDAなど)ではサポートされない状況を管理するためのコードを作成する必要があります。ADF Facesのダイアログ・フレームワークでは、JavaScriptを使用せずにダイアログやプロセスを簡単に起動および管理できます。

ADF Facesでは、新しいウィンドウまたは同じウィンドウでダイアログを起動できます。クライアント・ブラウザがポップアップ・ウィンドウおよび部分ページ・レンダリングをサポートしている場合は、ダイアログが新しいウィンドウで起動します(指定した場合)。クライアントでポップアップ・ウィンドウがサポートされていない場合は、サブプロセスが自動的に開始され、現行ページの状態をすべて保持しながら、現在のウィンドウにダイアログが表示されます。この機能を円滑に実行するためにコードを記述する必要はありません。サブプロセスは、一連のページまたは単一のページの場合があり、アプリケーション内の複数の場所で再利用できます。

アプリケーションでのダイアログのサポートをさらに簡単にするために、ADF Facesには、ActionSourcecommandButtoncommandLinkなど)を実装するコンポーネントに対するビルトイン・ダイアログ機能があります。たとえば、ログイン・ページでは、コマンド・ボタンを使用して、誤ったパスワードが入力されたときにエラー・ダイアログを起動できます。

コマンド・コンポーネントは、ダイアログを起動する際にLaunchEventを配信します。LaunchEventは、ダイアログを起動するコンポーネントに関する情報、およびダイアログの開始時に表示するコンポーネント・ツリーのルートに関する情報を保存します。LaunchEventに関連付けられているLaunchListenerは、LaunchEventを単一の引数として使用し、必要に応じてイベントを処理します。LaunchEventは、パラメータのマップをダイアログに渡すことができます。この受渡しは、起動イベントを処理する起動リスナーでgetDialogParameters()をコールすることで実行されます。起動リスナーは、コンポーネントのlaunchListener属性を介して(またはaddLaunchListener()を使用し、プログラムによって)コマンド・コンポーネントに登録されます。

通常は、特別なdialog:結果を含む標準JSFナビゲーション・ルールを指定することで、ダイアログへの(およびダイアログ内での)ナビゲーションを管理します。アクション・リスナーまたは値の変更リスナーなどで、AdfFacesContext.launchDialog()メソッドを使用し、プログラムによって(ナビゲーション・ルールを使用せずに)ダイアログを起動することもできます。

いずれの方法も、他のJSFページと同様に、AdfFacesContext.returnFromDialog()メソッドをコールして、ユーザーによるダイアログの終了をADF Facesに伝える必要があります。また、このメソッドを使用してダイアログから戻り値を送信できます。ダイアログを終了すると、戻り値が格納されているReturnEventが、そのダイアログを起動したコンポーネントに送信されます。イベントはReturnListenerに配信されます。このリスナーは、returnListener属性を使用してコンポーネントに登録するか、またはaddReturnListener()を使用し、プログラムによってコンポーネントに登録できます。ReturnListenerは、ReturnEventを単一の引数として使用し、必要に応じてイベントと戻り値を処理します。

要約すると、ADF Facesダイアログ・フレームワークには、次のようなメリットがあります。

ADF Facesダイアログ・フレームワークに関する現在の制限は、次のとおりです。

標準JSFナビゲーション・ルールが指定されているコマンド・コンポーネントを使用して、JSFページからダイアログを起動する方法は、「ADF Facesコマンド・コンポーネントからのダイアログの起動について」を参照してください。

フレームワークまたはコンポーネントの開発者は、「ADF Facesのダイアログ・フレームワークAPIについて」を参照し、ダイアログの実装とサポートに使用できるDialogSourceおよびDialogService APIの詳細を確認してください。


ADF Facesのコンポーネントおよびダイアログのサポートについて
selectInputTextおよびダイアログの起動について