プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle ADF FacesによるWebユーザー・インタフェースの開発
12c (12.2.1.1.0)
E77398-02
目次へ移動
目次

前
次

16 ポップアップ・ダイアログ、メニューおよびウィンドウの使用方法

この章では、JSFページのダイアログ、メニュー、ウィンドウなど、セカンダリ・ウィンドウでポップアップを作成および使用する方法について説明します。使用できるオプションとしては、宣言的またはプログラムによるポップアップの起動、コンテキストに依存した情報の表示、入力フィールドのリセット、インライン・ポップアップの自動取消の制御などがあります。

この章の内容は次のとおりです。

16.1 ポップアップ・ダイアログ、メニューおよびウィンドウについて

popupコンポーネントを他のいくつかのADF Facesコンポーネントとともに使用して、情報を表示またはエンド・ユーザーからの入力を要求する様々なダイアログ、メニューおよびウィンドウを作成できます。これらのコンポーネントを使用して、エンド・ユーザーがセカンダリ・ウィンドウの情報の表示と非表示、追加データの入力または機能の呼出しを行うことのできる機能を構成できます。これらのコンポーネントによって提供される機能により、プライマリ・インタフェースでレンダリングされるコンテンツの補足であるコンテンツまたは機能をレンダリングでき、その結果、整然としたユーザー・フレンドリなインタフェースを開発できます。

popupコンポーネントは非表示のレイアウト・コントロールであり、インライン(つまり、同じページに属する)ダイアログ、ウィンドウおよびメニューを表示するために他のコンポーネントと一緒に使用されます。popupコンポーネントはプライマリ・インタフェース内から呼び出され、アプリケーションは、ポップアップ・ブロッカの干渉を受けずに、プライマリ・インタフェースのコンテンツなど、popupコンポーネントにレンダリングするコンテンツを管理します。popupコンポーネントにレンダリングするコンテンツのタイプはHTMLにすることをお薦めします。FlashやPDFファイルなどの他のタイプのコンテンツは、popupコンポーネントに適切にレンダリングされないことがあります。

図16-1に、popupコンポーネントがADF Facesコンポーネントと連携してセカンダリ・ウィンドウをレンダリングする例を示します。

図16-1 ダイアログ、メニューおよびウィンドウのADF Facesコンポーネント

この図は周囲のテキストで説明しています

親ページとはに表示されるプロセスのページの作成をサポートするために、ADF Facesにはダイアログ・フレームワークが用意されています。このフレームワークでは、独自の制御フローを持つ複数のダイアログ・ページがサポートされています。たとえば、ユーザーがWebサイトで購入を選択した後の支払い手続き(チェックアウト)中に、支払いを完了する前に新しいクレジット・カードへの申込みを決定したとします。外部ブラウザ・ウィンドウで、ダイアログ・フレームワークを使用してクレジット・カードのトランザクションが開始されます。クレジット・カードのトランザクションが終了しても、元のページのチェックアウト・トランザクションは終了しません。

このダイアログ・フレームワークは、親ページの一部としてインラインで使用することもできます。これが役立つのは、ページ独自の制御フローが必要であるけれども、外部ウィンドウがポップアップ・ブロッカでブロックされることを防ぎたい場合です。

アプリケーションで完全なFusionテクノロジ・スタックを使用する場合は、このダイアログ・フレームワークがADFタスク・フローで使用するためにADFコントローラと統合されていることに注意してください。詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のモーダル・ダイアログでのバインド・タスク・フローの実行に関する項を参照してください。

アプリケーションのweb.xmlファイルでLAST_WINDOW_SESSION_TIMEOUTという名前のコンテキスト・パラメータを使用して、アプリケーションでウィンドウが1つのみ開いている場合にセッション・タイムアウトが発生するまでの最大非アクティブ期間を指定できます。コンテキスト・パラメータに対して指定する最大非アクティブ期間は、セッション・タイムアウトに対して指定する値よりも小さい必要があります。この機能を有効にし、セッションにウィンドウが1つのみ開いている場合、セッション・タイムアウトはこのコンテキスト・パラメータに対して指定した値に設定されます。次の例に、web.xmlファイルのLAST_WINDOW_SESSION_TIMEOUTコンテキスト・パラメータの値を1800秒に設定する方法を示します。

アプリケーションのweb.xmlファイルの構成の詳細は、「web.xmlでの構成」を参照してください。

<!-- Sets the session timeout to 1800 seconds when there is only one window open 
in the session and 1800 seconds is smaller then the original session timeout. This 
gives your application the option to end the session when an end user closes the 
last window. Specify a value in seconds. A negative value disables this feature. 
The default value is -1. -->
   <context-param>
     <param-name>LAST_WINDOW_SESSION_TIMEOUT</param-name>
     <param-value>1800</param-value>
   </context-param>

16.1.1 ポップアップ・ダイアログ、メニュー、ウィンドウのユースケースと例

dialogコンポーネントをpopupコンポーネントに子として配置し、実行時にポップアップにダイアログをレンダリングできます。dialogコンポーネントは、popupコンポーネントの唯一の直接の子コンポーネントである必要があります。実行時に、エンド・ユーザーは情報(検索基準など)を表示または入力でき、dialogコンポーネントのデフォルトのボタンを使用できます。このボタンがクリックされると、dialogEventが呼び出されます。図16-2に、エンド・ユーザーが「閉じる」ボタンをクリックすることでダイアログを閉じる例を示します。

図16-2 af:dialogコンポーネント

この図は周囲のテキストで説明しています

ポップアップ内でコンポーネントを使用して、別のコンポーネントに関連するコンテキスト情報を表示することもできます。そのように構成されている場合は、関連コンポーネントが小さな四角形を表示します。マウスが置かれると、アイコンが拡大し、ノート・アイコンも表示されます(図16-3を参照)。

図16-3 マウスを置くとアイコンが大きくなり、ノートが表示される

この図は周囲のテキストで説明しています

ユーザーがノート・アイコンをクリックすると、関連付けられたポップアップにそのコンテンツが表示されます。

16.1.2 ポップアップ・ダイアログ、メニューおよびウィンドウの追加機能

popupコンポーネントを使用してダイアログ、メニューおよびウィンドウを作成する前に、他のADF Faces機能を理解することが役立つ場合があります。また、ページにpopupコンポーネント(または関連コンポーネント)を追加した後で、アクセシビリティやローカライズなどの機能を追加することが必要になる場合があります。これらのコンポーネントで使用できる他の機能へのリンクを次に示します。

  • テキストでのパラメータの使用: コンポーネントに表示されるテキストに、実行時に解決されるパラメータを含める場合は、ADF Faces EL書式タグを使用できます。詳細は、「EL書式タグの使用方法」を参照してください。

  • イベント: dialogコンポーネントは、ADF Faces buttonコンポーネントをレンダリングします。buttonコンポーネントをshowPopupBehaviorタグとともに使用してポップアップを起動することもできます。buttonコンポーネントをshowPopupBehaviorタグとともに使用すると、アクティブ化されたときにActionEventイベントが配信されます。サーバーおよびクライアント上でのイベントの処理方法の詳細は、「イベントの処理」を参照してください。

  • メッセージ: ポップアップ・ダイアログとセカンダリ・ウィンドウは、ユーザーに様々なレベルのヘルプ情報を提供するためによく使用されます。ユーザーへのメッセージの表示方法の詳細は、「ヒント、メッセージおよびヘルプの表示」を参照してください。

  • ローカライズ: 作成するポップアップ・ダイアログ、メニューおよびウィンドウのラベルのテキストを直接入力するかわりに、プロパティ・ファイルを使用できます。これらのファイルにより、テキスト文字列の翻訳を管理できます。詳細は、「ページの国際化およびローカライズ」を参照してください。

  • スキン: スキンを変更することで、ポップアップ・ダイアログ、メニューおよびウィンドウの作成に使用するコンポーネントのルック・アンド・フィールを変更できます。詳細は、「スタイルおよびスキンを使用した外観のカスタマイズ」を参照してください。

  • アクセシビリティ: ポップアップ・ダイアログ、メニューおよびウィンドウをアクセス可能にできます。詳細は、「アクセス可能なADF Facesページの開発」を参照してください。

  • ダイアログ・フレームワーク: アプリケーションで完全なFusionテクノロジ・スタックを使用する場合は、ダイアログ・フレームワークがADFタスク・フローで使用するためにADFコントローラと統合されていることに注意してください。詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』の「アプリケーションでのダイアログの使用」の章を参照してください。

  • タッチ装置: ADF Facesコンポーネントはタッチ装置によって異なる動作および表示を行うことがあります。詳細は、「ADF Facesを使用したタッチ装置のWebアプリケーションの作成」を参照してください。

  • ドラッグ・アンド・ドロップ: ユーザーがコンポーネントをページの別の領域にドラッグ・アンド・ドロップできるように、コンポーネントを構成できます。詳細は、「ドラッグ・アンド・ドロップ機能の追加」を参照してください。

16.2 ポップアップの宣言的な作成

dialogpanelWindowmenuおよびnoteWindowコンポーネントは、すべてpopupコンポーネントの内部で使用して、表16-1に示すようにインライン・ポップアップを表示できます。popupコンポーネントの子コンポーネントが存在しない場合は、非常に単純なインライン・ポップアップが表示されます。


表16-1 popupコンポーネントで使用されるコンポーネント

コンポーネント 実行時の表示

dialog

子をダイアログ内に表示し、OKYesNoおよびCancelのアクションがアクティブ化されたときにイベントを配信します。詳細は、「ダイアログの作成方法」を参照してください。

この図は周囲のテキストで説明しています

panelWindow

ダイアログに似たウィンドウに子を表示しますが、イベントはサポートしません。詳細は、「パネル・ウィンドウの作成方法」を参照してください。

この図は周囲のテキストで説明しています

menu

関連コンポーネントのポップアップ・メニューを表示します。詳細は、「ポップアップ・メニューの作成方法」を参照してください。

この図は周囲のテキストで説明しています

noteWindow

特定のUIコンポーネントに関連付けられた読取り専用の情報を表示します。ノート・ウィンドウはヘルプやメッセージの表示に使用され、通常はマウスを置いたり、フォーカスをしたときに表示されます。詳細は、「ノート・ウィンドウの作成方法」を参照してください。

この図は周囲のテキストで説明しています

dialogpanelWindowmenuまたはnoteWindowコンポーネントのいずれも直接の子コンポーネントとして持たないpopupコンポーネント

コンテンツをインラインで表示します。
この図は周囲のテキストで説明しています

dialogコンポーネントとpanelWindowコンポーネントはいずれも定義ヘルプがサポートされていますが、ヘルプ・アイコン(疑問符が表示された青い丸)の上にカーソルを移動するとコンテンツが表示されます。dialogおよびpanelWindowコンポーネントでは説明ヘルプはサポートされません。詳細は、「ヒント、メッセージおよびヘルプの表示」を参照してください。

一般的には、buttonコンポーネントをshowPopupBehaviorタグとともに使用してポップアップを起動します。showPopupBehaviorタグを、起動する必要のあるコンポーネントに関連付けます。このタグは、(必要に応じて)ポップアップの位置も制御します。

buttonコンポーネントのアクション・イベントとともに使用することに加えて、showPopupBehaviorタグは他のイベント(showDetailイベントやselectionイベントなど)とともに使用することもできます。詳細は、「ポップアップの宣言的な呼出し」を参照してください。

showPopupBehaviorタグをアクション・コンポーネントとともに使用するかわりに、バッキングBeanメソッドを作成してポップアップを起動、取消または非表示にできます。作成するバッキングBeanメソッドは、アクション・コンポーネントによって返されるactionEventを引数として受け取ります。この代替方法の詳細は、「ポップアップのプログラムによる呼出し」を参照してください。

デフォルトで、ポップアップのコンテンツは、ポップアップが表示されるまでサーバーから送信されません。このため、開かれたときにポップアップが表示されるスピードと、親ページがレンダリングされるスピードが入れ替わります。ポップアップがロードされると、すぐに表示できるよう、コンテンツはクライアントにおいてデフォルトでキャッシュされます。

popupコンポーネントのcontentDelivery属性を次のいずれかのオプションに設定することで、コンテンツの配信戦略を変更できます。

  • lazy - 前述のデフォルトの戦略。コンテンツは、ポップアップが一度表示されるまでロードされず、ロードされるとキャッシュされます。

  • immediate - コンテンツはすぐにページにロードされるため、コンテンツを可能なかぎり迅速に表示できます。この方法は、ページが使用されるたびにすべてのユーザーが必ず使用するポップアップに使用します。

  • lazyUncached - コンテンツはポップアップが表示されるまでロードされず、ポップアップを表示するたびにコンテンツが再ロードされます。この方法は、失効するか期限切れになる可能性があるデータをポップアップに表示する場合に使用します。

popupコンポーネントのcontentDelivery属性をlazyに設定することを選択した場合、別のpopupコンポーネント属性(childCreation)をdeferredに設定することで、popupコンポーネントとそれをホストするページのパフォーマンスをさらに最適化できます。これにより、アプリケーションがコンテンツを配信するまでpopupコンポーネントの子コンポーネントの作成が遅延されます。childCreation属性のデフォルト値はimmediateです。

16.2.1 ダイアログの作成方法

ダイアログの終了時にイベントを起動する必要がある場合は、ダイアログを作成します。dialogコンポーネントをpopupコンポーネントに子として追加した後、他のコンポーネントを追加してデータを表示および収集できます。

デフォルトでは、dialogコンポーネントは次のボタンの組合せを持つことができます。

  • 取消

  • OK

  • 「OK」および「取消」

  • 「はい」および「いいえ」

  • 「はい」、「いいえ」および「取消」

  • なし

これらのボタンは、クリックされるとdialogEventを起動します。buttonBarファセットを使用して、ダイアログに他のボタンを追加できます。追加するボタンはdialogEventを起動しません。かわりに、標準のactionEventを起動します。actionEventがダイアログ内のコンポーネントに対してのみ起動されるようにするために、追加するボタンのpartialSubmit属性をtrueに設定してください。ただし、af:popupコンポーネントのautoCancelプロパティの値をdisabledに設定した場合は、ボタンを追加し、そのpartialSubmit属性をfalseに設定できます。この後者のオプション(partialSubmitfalseに設定)を選択すると、アプリケーションはpopupコンポーネントの可視性(また、拡張によりdialogコンポーネント)をリストアする前にページを再ロードしてページのコンポーネントを再初期化するため、エンド・ユーザーの待機時間が長くなります。af:popupコンポーネントのautoCancelプロパティの値がenabled(デフォルト値)に設定されている場合は、ボタンのpartialSubmit属性をtrueに設定する必要があります。af:popupコンポーネントのautoCancelプロパティの使用の詳細は、「インライン・ポップアップの自動取消の制御」を参照してください。

始める前に:

dialogコンポーネントの属性およびその他のコンポーネントがインライン・ダイアログの機能に与える影響を理解することが役立つ場合があります。詳細は、「ポップアップの宣言的な作成」を参照してください。

他のADF Faces機能を使用して追加できる機能について理解することが役立つ場合もあります。詳細は、「ポップアップ・ダイアログ、メニューおよびウィンドウの追加機能」を参照してください。

インライン・ダイアログを作成する手順:

  1. 「コンポーネント」ウィンドウの「レイアウト」パネルの「セカンダリ・ウィンドウ」グループから、「ポップアップ」をドラッグしてページにドロップします。

    ヒント:

    位置はpopupの呼出しに使用されるコンポーネントによって決定されるため、popupコンポーネントがページに表示されるかどうかは関係ありません。ただし、popupコンポーネントはformコンポーネント内にある必要があります。

  2. 「プロパティ」ウィンドウの「共通」セクションを開いて、次の属性を設定します。
    • ContentDelivery: ポップアップのコンポーネントにコンテンツが配信される方法を選択します。

      ヒント:

      ダイアログの入力コンポーネントの値は、ユーザーがダイアログの「取消」ボタンをクリックしたときにリセットされません。ユーザーが2回目にダイアログを開いた場合、これらの値が依然として表示されます。この値をサーバーの現在の値に合せるには、contentDelivery属性をlazyUncachedに設定します。

    • Animate: ポップアップ・ダイアログのアニメーションを構成します。詳細は、「アニメーションおよびポップアップに関する必知事項」を参照してください。

    • LauncherVar: 起動コンポーネントの参照に使用する変数を入力します。この変数は、popupまたはその子コンポーネントでのイベント配信時にのみ、またEventContextlauncherに設定されている場合にのみアクセス可能です。

    • EventContext: ポップアップが複数のオブジェクトによって共有されている場合、たとえばポップアップ内のダイアログに表で選択された行に関する情報が表示される場合は、launcherに設定します。この属性をlauncherに設定すると、イベント・リスナーがコールされる前にクリックされた行が現在の行になり、その行のデータのみ返されます。詳細は、「実行時に行われる処理: popupコンポーネントのイベント」を参照してください。

  3. 必要に応じて、「プロパティ」ウィンドウで次の属性を設定します。
    • AutoCancel: インライン・ポップアップの自動取消を防ぐにはdisabledを選択します。詳細は、「インライン・ポップアップの自動取消の制御」を参照してください。

    • ChildCreation: deferredを選択すると、popupコンポーネントの子コンポーネントの作成はアプリケーションのコンテンツが配信されるまで延期されます。childCreation属性のデフォルト値はimmediateです。詳細は、「ポップアップの宣言的な作成」を参照してください。

    • ResetEditableValues: エンド・ユーザーがダイアログを取り消す場合にエンド・ユーザーが入力した編集可能な値をnullにリセットするには、whenCanceledを選択します。

      または、resetListenerコンポーネントを使用できます。resetListenerコンポーネントの使用の詳細は、「ポップアップの入力フィールドのリセット」を参照してください。

  4. 「コンポーネント」ウィンドウから、「ダイアログ」popupコンポーネントに直接の子としてドラッグ・アンド・ドロップします。
  5. 「プロパティ」ウィンドウの「共通」セクションを開いて、次の属性を設定します。
    • Type: ダイアログに表示する組込みの部分送信ボタンを選択します。

      たとえば、type属性をyesNoCancelに設定した場合、ダイアログには「はい」「いいえ」「取消」のボタンが表示されます。これらのいずれかのボタンがクリックされると、ダイアログが閉じ、関連付けられた結果(okyesnoまたはcancel)がイベントで配信されます。okyesおよびnoの結果はdialogEventで配信されます。cancelの結果はPopupCanceledイベントで送信されます。ロジックの決定に結果を使用して、適切なリスナー・プロパティを使用し、イベントを処理するメソッドにバインドできます。

      ヒント:

      エラーまたはそれより高い重大度のADF Facesメッセージがある場合、ダイアログは閉じません。

    • Title: ダイアログ・ウィンドウにタイトルとして表示するテキストを入力します。

    • CloseIconVisible: 「閉じる」アイコンをダイアログに表示するかどうかを選択します。

    • Modal: ダイアログをモーダルにするかどうかを選択します。モーダル・ダイアログでは、ユーザーはダイアログが閉じられるまでメイン・ページに戻ることができません。

    • Resize: ユーザーがダイアログのサイズを変更できるようにするかどうかを選択します。デフォルトはoffです。

    • StretchChildren: 子コンポーネントをダイアログに合せて拡大するかどうかを選択します。firstに設定されている場合、ダイアログは単一の子コンポーネントを拡大します。ただし、拡大できる子コンポーネントであることが必要です。詳細は、「ジオメトリ管理およびコンポーネントの拡大」を参照してください。

      注意:

      Resizeonに設定するかStretchChildrenfirstに設定した場合は、ContentWidthおよびContentHeightも設定する必要があります(手順8を参照)。それ以外の場合、サイズはデフォルトで250x250ピクセルになります。

  6. 「外観」セクションを開き、テキスト属性を設定します。

    ボタン・テキストとアクセス・キーを別々に指定するかわりに、2つを結合して、アクセス・キーがボタン・テキストの一部になるようにできます。アクセス・キーとして使用する文字の前にアンパサンド(&)を付けます。

    たとえば、肯定ボタンのテキストを「OK」にし、「OK」「O」をアクセス・キーにする場合は、「&OK」と入力します。

  7. 「動作」セクションを開き、必要に応じてDialogListener属性の値を入力します。値は、イベントを処理するダイアログ・リスナー・メソッドへのEL式メソッド参照である必要があります。

    たとえば、項目の削除を確認するダイアログを作成するとします。次の例に示すdeleteItemメソッドのようなメソッドをマネージドBeanに作成できます。このメソッドは、イベントからの結果にアクセスします。結果がyes以外の場合は、ダイアログが閉じられます。結果がyes(ユーザーが項目を閉じることを意味します)の場合、メソッドは選択された項目を取得し、削除します。

      public void deleteItem(DialogEvent dialogEvent)
      {
        if (dialogEvent.getOutcome() != DialogEvent.Outcome.yes)
        {
          return;
        }
     
        // Ask for selected item from FileExplorerBean
        FileItem selectedFileItem = _feBean.getLastSelectedFileItem();
        if (selectedFileItem == null)
        {
          return;
        }
        else
        {
          // Check if we are deleting a folder
          if (selectedFileItem.isDirectory())
          {
            _feBean.setSelectedDirectory(null);
          }
        }
     
        this.deleteSelectedFileItem(selectedFileItem);
      }
    

    次の例に、dialogListener属性がdeleteItemメソッドにどのようにバインドされるかを示します。

    <af:dialog title="#{explorerBundle['deletepopup.popuptitle']}"
               type="yesNo"
               dialogListener="#{explorer.headerManager.deleteItem}"
               id="d1">
    

    dialogEventは、結果がokyesまたはnoの場合にのみサーバーに伝播されます。必要に応じてこれをブロックできます。詳細は、「イベントがサーバーに伝播されないようにする方法」を参照してください。

    ユーザーが「取消」ボタン(または「閉じる」アイコン)をクリックした場合、結果はcancelで、popupCancelクライアント・イベントがpopupコンポーネントで発生します。popupコンポーネントにレンダリングされた入力コンポーネントに入力された値は、サーバーに送信されません。popupコンポーネントがレンダリングした後で値が変更された編集可能コンポーネントは、変更された値をサーバーに送信しません。popupCancelイベントがサーバーに配信されます。

  8. ダイアログのサイズを固定する場合、またはresizeonに設定済かstretchChildrenfirstに設定済の場合は、「外観」セクションを開いて次の属性を設定します。
    • ContentHeight: 目的の高さをピクセル単位で入力します。

    • ContentWidth: 目的の幅をピクセル単位で入力します。

    ヒント:

    (resize属性がonに設定されている場合)ユーザーは実行時にこれらの属性の値を変更できますが、アプリケーションが変更の永続性を使用するように構成されていないかぎり、ユーザーがページを終了すると値は保持されません。変更の永続性の有効化および使用方法の詳細は、「JSFページでのユーザー・カスタマイズの許可」を参照してください。

    注意:

    アクション・コンポーネントをshowPopupBehaviorタグなしで使用してダイアログを起動する場合に、そのアクション・コンポーネントのwindowHeight属性およびwindowWidth属性の値が指定されている場合は、アクション・コンポーネントでの値がcontentHeightおよびcontentWidthの値よりも優先されます。ダイアログ・フレームワークでは、アクション・コンポーネントを使用してダイアログを起動するときにshowPopupBehaviorタグを指定しないことも許可されます。詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のモーダル・ダイアログでのバインド・タスク・フローの実行に関する項を参照してください。showPopupBehaviorタグの詳細は、「ポップアップの宣言的な呼出し」を参照してください。

  9. 必要に応じて、buttonコンポーネントをbuttonBarファセットに追加します。追加したbuttonコンポーネントによって起動されるのは、標準のactionEventであり、dialogEventではありません。actionEventがダイアログ内のコンポーネントに対してのみ起動されるようにするために、buttonコンポーネントのpartialSubmit属性をtrueに設定してください。buttonコンポーネントのpartialSubmit属性をfalseに設定できるのは、af:popupコンポーネントのautoCancelプロパティがdisabledに設定されている場合です。af:popupコンポーネントのautoCancelプロパティとbuttonコンポーネントのpartialSubmitプロパティの値によって、buttonコンポーネントがクリックされたときにどのようにダイアログを閉じて再ロードするかが決まります。詳細は、「インライン・ポップアップの自動取消の制御」を参照してください。

    ヒント:

    ファセットがビジュアル・エディタに表示されていない場合は、「構造」ウィンドウでdialogコンポーネントを右クリックして「ファセット - ダイアログ」→「ButtonBar」を選択します。ページで使用されているファセットは、ファセット名の前にチェックマークが表示されます。

    デフォルトでは、追加したbuttonコンポーネントはクリックされてもダイアログが閉じることはありません。buttonコンポーネントのactionListenerを、ダイアログの終了およびその他の必要な処理を管理するハンドラにバインドする必要があります。これを行う方法の例は、タグのドキュメントを参照してください。

  10. ダイアログのデータを表示または収集するコンポーネントを挿入します。panelGroupLayoutなどのレイアウト・コンポーネントを使用してコンポーネントを含めます。

    ヒント:

    通常は、ダイアログの「取消」ボタンまたは「閉じる」アイコンをクリックすると、inputTextコンポーネントに入力されたデータは送信されません。ただし、ダイアログのinputTextコンポーネントでautoSubmit属性をtrueに設定すると、この設定が送信の原因となるためダイアログの取消動作がオーバーライドされます。

  11. 親ページにロジックを追加して、ポップアップとダイアログを呼び出します。詳細は、「ポップアップの宣言的な呼出し」を参照してください。

16.2.2 パネル・ウィンドウの作成方法

panelWindowコンポーネントはdialogコンポーネントに似ていますが、ボタンの構成やファセットへのボタンの追加はできません。panelWindowのデータを処理するロジックを呼び出す必要がある場合は、popupコンポーネントのcancelイベントのリスナーを作成する必要があります。

panelWindowコンポーネントを含むpopupコンポーネントは、formコンポーネントに含まれている必要があります。

ヒント:

Fusionテクノロジ・スタックを使用するアプリケーションでpanelWindowをインライン・ポップアップとして使用する場合に、ダイアログの外観をエミュレートするには、panelStretchLayoutコンポーネントの中央ファセットにpanelWindowコンポーネントを配置し、buttonボタンをbottomファセットに配置します。

始める前に:

panelWindowコンポーネントの属性がインライン・ウィンドウの機能に与える影響を理解することが役立つ場合があります。詳細は、「ポップアップの宣言的な作成」を参照してください。

他のADF Faces機能を使用して追加できる機能について理解することが役立つ場合もあります。詳細は、「ポップアップ・ダイアログ、メニューおよびウィンドウの追加機能」を参照してください。

インライン・ウィンドウを作成する手順:

  1. 「コンポーネント」ウィンドウの「レイアウト」パネルの「セカンダリ・ウィンドウ」グループから、「ポップアップ」をドラッグしてページにドロップします。

    ヒント:

    位置はpopupの呼出しに使用されるコンポーネントによって決定されるため、popupコンポーネントがページに表示されるかどうかは関係ありません。ただし、popupコンポーネントはformコンポーネント内にある必要があります。

  2. 「プロパティ」ウィンドウの「共通」セクションを開いて、次の属性を設定します。
    • ContentDelivery: ポップアップのコンポーネントにコンテンツが配信される方法を選択します。

      ヒント:

      入力コンポーネントの値は、ユーザーがpanelWindowコンポーネントを閉じたときにリセットされません。ユーザーが2回目にウィンドウを開いた場合、これらの値が依然として表示されます。この値をサーバーの現在の値に合せるには、contentDelivery属性をlazyUncachedに設定します。

    • Animate: ポップアップ・ウィンドウのアニメーションを構成します。詳細は、「アニメーションおよびポップアップに関する必知事項」を参照してください。

    • LauncherVar: 変数の名前(sourceなど)を入力します。表のvar属性と同様に、この変数はリクエスト・スコープの参照を、showPopupBehaviorタグを含むコンポーネントに格納するために使用されます。変数は、popupまたはその子コンポーネントでのイベント配信時にのみ、またEventContextlauncherに設定されている場合にのみアクセス可能です。

    • EventContext: ポップアップが複数のオブジェクトによって共有されている場合、たとえばポップアップ内のウィンドウに表で選択された行に関する情報が表示される場合は、launcherを選択します。この属性をlauncherに設定すると、イベント・リスナーがコールされる前にクリックされた行が現在の行になり、その行のデータのみ返されます。詳細は、「実行時に行われる処理: popupコンポーネントのイベント」を参照してください。

    • PopupCancelListener: ウィンドウが閉じられるときに呼び出すロジックでハンドラに評価されるEL式に設定します。

    • 必要に応じて、「AutoCancel」ドロップダウンで値を選択します。この値によって、自動取消の動作が決定します。詳細は、「インライン・ポップアップの自動取消の制御」を参照してください。

  3. 「コンポーネント」ウィンドウの「レイアウト」パネルの「セカンダリ・ウィンドウ」グループから、「パネル・ウィンドウ」popupコンポーネントに直接の子としてドラッグ・アンド・ドロップします。
  4. 「プロパティ」ウィンドウの「共通」セクションを開いて、次の属性を設定します。
    • Modal: ウィンドウをモーダルにするかどうかを選択します。モーダル・ウィンドウでは、ユーザーはウィンドウが閉じられるまでメイン・ページに戻ることができません。

    • CloseIconVisible: 「閉じる」アイコンをウィンドウに表示するかどうかを選択します。

    • Title: ウィンドウにタイトルとして表示されるテキスト。

    • Resize: ユーザーがダイアログのサイズを変更できるようにするかどうかを選択します。デフォルトはoffです。

    • StretchChildren: 子コンポーネントをウィンドウに合せて拡大するかどうかを選択します。firstに設定されている場合、ウィンドウは単一の子コンポーネントを拡大します。ただし、拡大できる子コンポーネントであることが必要です。詳細は、「ジオメトリ管理およびコンポーネントの拡大」を参照してください。

      注意:

      Resizeonに設定するかStretchChildrenfirstに設定した場合は、ContentWidthおよびContentHeightも設定する必要があります(手順6を参照)。それ以外の場合、サイズはデフォルトで250x250ピクセルになります。

  5. ウィンドウのサイズを固定する場合、またはResizeonに設定済かStretchChildrenfirstに設定済の場合は、「外観」セクションを開いて次の属性を設定します。
    • ContentHeight: 目的の高さをピクセル単位で入力します。

    • ContentWidth: 目的の幅をピクセル単位で入力します。

    ヒント:

    (resize属性がonに設定されている場合)ユーザーは実行時にこれらの属性の値を変更できますが、アプリケーションが変更の永続性を使用するように構成されていないかぎり、ユーザーがページを終了すると値は保持されません。変更の永続性の有効化および使用方法の詳細は、「JSFページでのユーザー・カスタマイズの許可」を参照してください。

    注意:

    アクション・コンポーネントをshowPopupBehaviorタグなしで使用してダイアログを起動する場合に、そのアクション・コンポーネントのwindowHeight属性およびwindowWidth属性の値が設定されている場合は、アクション・コンポーネントでの値がcontentHeightおよびcontentWidthの値よりも優先されます。showPopupBehaviorタグの詳細は、「ポップアップの宣言的な呼出し」を参照してください。

  6. ウィンドウのデータを表示または収集するコンポーネントを挿入します。panelGroupLayoutなどのレイアウト・コンポーネントを使用してコンポーネントを含めます。
  7. 親ページにロジックを追加して、ポップアップとパネル・ウィンドウを呼び出します。詳細は、「ポップアップの宣言的な呼出し」を参照してください。

16.2.3 ポップアップ・メニューの作成方法

popupコンポーネント内でメニュー・コンポーネントを使用して、ポップアップ・メニューを作成します。特定のトリガーに基づいて、別のコンポーネントからコンテキスト・メニュー・ポップアップを呼び出すことができます。かわりに、ツールバーのツールバー・ボタンでポップアップ・メニューを起動する場合は、「ツールバーの使用方法」を参照してください。

始める前に:

popupコンポーネントの属性およびその他のコンポーネントがポップアップ・メニューの機能に与える影響を理解することが役立つ場合があります。詳細は、「ポップアップの宣言的な作成」を参照してください。

他のADF Faces機能を使用して追加できる機能について理解することが役立つ場合もあります。詳細は、「ポップアップ・ダイアログ、メニューおよびウィンドウの追加機能」を参照してください。

インライン・ポップアップ・メニューを作成する手順:

  1. 「コンポーネント」ウィンドウの「レイアウト」パネルの「セカンダリ・ウィンドウ」グループから、「ポップアップ」をドラッグしてページにドロップします。

    ヒント:

    位置はpopupの呼出しに使用されるコンポーネントによって決定されるため、popupコンポーネントがページに表示されるかどうかは関係ありません。ただし、popupコンポーネントはformコンポーネント内にある必要があります。

  2. 「プロパティ」ウィンドウの「共通」セクションを開いて、次の属性を設定します。
    • ContentDelivery: ポップアップのコンポーネントにコンテンツが配信される方法を決定します。

    • Animate: コンテキスト・メニューのアニメーションを構成します。詳細は、「アニメーションおよびポップアップに関する必知事項」を参照してください。

    • LauncherVar: 起動コンポーネントの参照に使用する変数名(sourceなど)を入力します。この変数は、popupまたはその子コンポーネントでのイベント配信時にのみ、またEventContextlauncherに設定されている場合にのみアクセス可能です。

    • EventContext: ポップアップが複数のオブジェクトによって共有されている場合、たとえばポップアップ内のメニューに表で選択された行に関する情報が表示される場合は、launcherに設定します。この属性をlauncherに設定すると、イベント・リスナーがコールされる前にクリックされた行が現在の行になり、その行のデータのみ返されます。詳細は、「実行時に行われる処理: popupコンポーネントのイベント」を参照してください。

    • 必要に応じて、「AutoCancel」ドロップダウンで値を選択します。この値によって、自動取消の動作が決定します。詳細は、「インライン・ポップアップの自動取消の制御」を参照してください。

  3. 「コンポーネント」ウィンドウで、「メニュー」popupコンポーネントに直接の子としてドラッグ・アンド・ドロップし、commandMenuItemコンポーネントを使用してメニューを作成します。作成方法は、「メニュー・バーのメニューの作成および使用方法」を参照してください。

    ヒント:

    これはポップアップ・メニューのため、「メニュー・バーのメニューの作成および使用方法」の手順1から5の説明に従って、メニュー・バーや複数のメニューを作成する必要はありません。

  4. 親ページにロジックを追加して、ポップアップとポップアップ・メニューを呼び出します。詳細は、「ポップアップの宣言的な呼出し」を参照してください。

16.2.4 ノート・ウィンドウの作成方法

noteWindowコンポーネントを使用して、読取り専用テキストを表示します。noteWindowコンポーネントを含むpopupコンポーネントは、formコンポーネントに含まれている必要があります。

始める前に:

noteWindowコンポーネントの属性およびその他のコンポーネントが機能に与える影響を理解することが役立つ場合があります。詳細は、「ポップアップの宣言的な作成」を参照してください。

他のADF Faces機能を使用して追加できる機能について理解することが役立つ場合もあります。詳細は、「ポップアップ・ダイアログ、メニューおよびウィンドウの追加機能」を参照してください。

インライン・ウィンドウを作成する手順:

  1. 「コンポーネント」ウィンドウの「レイアウト」パネルの「セカンダリ・ウィンドウ」グループから、「ポップアップ」をドラッグしてページにドロップします。

    ヒント:

    位置はpopupの呼出しに使用されるコンポーネントによって決定されるため、popupコンポーネントがページに表示されるかどうかは関係ありません。ただし、popupコンポーネントはformコンポーネント内にある必要があります。

  2. 「プロパティ」ウィンドウの「共通」セクションを開いて、次の属性を設定します。

    • ContentDelivery: ポップアップのコンポーネントにコンテンツが配信される方法を決定します。

    • Animate: ノート・ウィンドウのアニメーションを構成します。詳細は、「アニメーションおよびポップアップに関する必知事項」を参照してください。

    • LauncherVar: 起動コンポーネントの参照に使用する変数を入力します。この変数は、popupまたはその子コンポーネントでのイベント配信時にのみ、またEventContextlauncherに設定されている場合にのみアクセス可能です。

    • EventContext: ポップアップが複数のオブジェクトによって共有されている場合、たとえばポップアップ内のウィンドウに表で選択された行に関する情報が表示される場合は、launcherを選択します。この属性をlauncherに設定すると、イベント・リスナーがコールされる前にクリックされた行が現在の行になり、その行のデータのみ返されます。詳細は、「実行時に行われる処理: popupコンポーネントのイベント」を参照してください。

    • PopupCancelListener: ウィンドウが閉じられるときに呼び出すロジックでハンドラに評価されるEL式に設定します。

    • 必要に応じて、「AutoCancel」ドロップダウンで値を選択します。この値によって、自動取消の動作が決定します。詳細は、「インライン・ポップアップの自動取消の制御」を参照してください。

  3. 「コンポーネント」ウィンドウの「レイアウト」パネルの「セカンダリ・ウィンドウ」グループから、「ノート・ウィンドウ」popupコンポーネントに直接の子としてドラッグ・アンド・ドロップします。

  4. ウィンドウに表示するテキストを入力する手順:

    1. 「ソース」タブをクリックしてページのソース・コードを表示します。

    2. af:noteWindowタグから閉じるスラッシュ(/)を削除します。

    3. af:noteWindowタグの下に、表示するテキストを単純なHTMLタグを使用して入力し、閉じるaf:noteWindowタグで終了します。

    次の例に、ノート・ウィンドウのテキストを表示します。

    <af:popup id="popupHead" contentDelivery="lazyUncached">
      <af:noteWindow inlineStyle="width:200px" id="nw3">
        <p>In anatomy, the head of an animal is the rostral part (from
        anatomical position) that usually comprises the brain, eyes,
        ears, nose, and mouth (all of which aid in various sensory
        functions, such as sight, hearing, smell, and taste). Some very
        simple animals may not have a head, but many bilaterally
        symmetric forms do.</p>
      </af:noteWindow>
    </af:popup>
    

    図16-4に、ノートがどのように表示されるかを示します。

    図16-4 ノート・ウィンドウに表示されるテキスト

    この図は周囲のテキストで説明しています
  5. 必要に応じて、「プロパティ」ウィンドウの「動作」セクションを開いて「AutoDismissalTimeout」フィールドで秒数を指定します。指定する値によって、アプリケーションが自動的に閉じる前にノート・ウィンドウが表示される秒数が決定されます。指定する値によって、デフォルトの自動消去動作がオーバーライドされます。エンド・ユーザーがノート・ウィンドウのコンテンツにマウスを移動すると、自動消去動作はノート・ウィンドウのデフォルトの自動消去動作に戻るため、このオーバーライドは取り消されます。デフォルトの自動消去動作では、フォーカスが起動ソースまたはポップアップのコンテンツから変更された場合にノート・ウィンドウが終了します。

    注意:

    タイムアウト取消期間はマウス・カーソルを重ねることでトリガーされ、キーボードの同等の操作は用意されていないため、このプロパティで有効化された機能は使い勝手がよいとは言えません。

  6. 親ページにロジックを追加して、ポップアップとノート・ウィンドウを呼び出します。詳細は、「ポップアップの宣言的な呼出し」を参照してください。

16.2.5 実行時に行われる処理: popupコンポーネントのイベント

コンテンツがポップアップに配信され、contentDelivery属性がlazyまたはlazyUncachedに設定されている場合は、popupFetchサーバー側イベントが起動します。このイベントには、eventContextlauncherVarの2つのプロパティがあります。eventContextプロパティは、イベントの配信元のコンテキストがポップアップのコンテキスト(self)とポップアップを起動したコンポーネント(launcher)のどちらであるかを決定します。コンテキストをlauncherに設定すると、フレームワークはポップアップを起動したコンポーネントがポップアップではなくイベントを起動したかのうように動作するため、ポップアップが複数のコンポーネントによって共有されている場合に非常に便利な可能性があります。変数を使用して表の行をスタンプ・アウトするのと同様の方法で、launcherVarプロパティを使用して現在のランチャを追跡します。

たとえば、表の中の列で、linkコンポーネントを使用して人物のファースト・ネームを表示するとします。このlinkコンポーネントにマウスを置くと、ポップアップnoteWindowが起動されて、その人物のフル・ネームが表示されます。このnoteWindowは表のすべての行で使用されますが、表示する必要があるのはクリックされたlinkコンポーネントが存在する行のフル・ネームのみであるため、次の例に示すようにeventContextプロパティを使用して、コンテキストがその行となるようにします。

<af:popup id="noteWindow" contentDelivery="lazyUncached" eventContext="launcher"
          launcherVar="source">
  <af:noteWindow>
    <af:outputText value="#{testBean.fullName}"/>
  </af:noteWindow>
</af:popup>
<af:table var="person" value="#{testBean.people}">
  <af:column id="firstName">
    <af:link text="#{person.firstName}">
      <af:showPopupBehavior popupId="::noteWindow" triggerType="mouseHover"/>
    </af:link>
  </af:column>
</af:table>

変数ソースを使用して、ソースから値を取得し、それらを適用するか、値を設定できます。たとえば、次の例に示すようにsetPropertyListenerおよびclientAttributeタグを使用して、表で使用されるpeopleオブジェクトの姓名値を取得し、それをウィンドウで使用されるtestBeanfullNameプロパティの値として設定できます。

<af:popup id="noteWindow" contentDelivery="lazyUncached" eventContext="launcher"
          launcherVar="source">
  <af:noteWindow>
    <af:outputText value="#{testBean.fullName}"/>
  </af:noteWindow>
  <af:setPropertyListener from="#{source.attributes.fullName}"
                          to="#{testBean.fullName}" type="popupFetch"/>
</af:popup>
<af:table var="person" value="#{testBean.people}">
  <af:column id="firstName">
    <f:facet name="header">
      <af:outputText value="First Name"/>
    </f:facet>
    <af:link text="#{person.firstName}">
      <af:showPopupBehavior popupId="::noteWindow" triggerType="mouseHover"/>
      <af:clientAttribute name="fullName" value="#{person.fullName}"/>
    </af:link>
  </af:column>
</af:table>

この例では、launcherVarプロパティ・ソースはpopupFetchイベントを使用して現在の行の姓名を取得します。setPropertyListenerタグの使用の詳細は、「Javaコードを記述せずにpageFlowScopeスコープを使用する方法」を参照してください。クライアント属性の使用の詳細は、「クライアント側コンポーネントに対するボーナス属性の使用」を参照してください。showPopupBehaviorタグの詳細は、「ポップアップの宣言的な呼出し」を参照してください。

ポップアップは、次のクライアント側イベントも起動します。

  • popupOpening: ポップアップが起動されると、開始されます。このイベントがクライアント側のリスナーで取り消されると、ポップアップは表示されません。

  • popupOpened: ポップアップが表示可能になった後、起動されます。このイベントを使用する1つの例は、ポップアップでデフォルトのフォーカスをオーバーライドするカスタム・ルールの作成です。

  • popupCanceled: 自動消去やポップアップ・クライアント・コンポーネントのcancelメソッドの明示的な起動によってポップアップが予期せずに閉じると、起動します。このクライアント側イベントには、サーバー側の対応するイベントもあります。

  • popupClosed: ポップアップが非表示の場合、またはポップアップが予期せず閉じた場合に起動します。このクライアント側イベントには、サーバー側の対応するイベントもあります。

「はい」ボタンのクリックなど、肯定的な状況でポップアップが閉じられた場合は非表示になります。「閉じる」アイコンまたは「取消」ボタンがクリックされた場合など、ポップアップが自動消去によって閉じられた場合は取り消されます。どちらのタイプの消去でも、popupClosedクライアント側イベントが発生します。ポップアップを取り消すと、サーバー側に対応するイベントを持つクライアント側popupCanceledイベントも発生します。イベントに対しステータス登録されたリスナーがないかぎり、イベントはサーバーに伝播されません。伝播される場合、ポップアップの子コンポーネントの処理が阻止されるため、送信された値と検証は無視されます。ポップアップが取り消された場合に必要な処理を行うロジックを含む、popupCanceledイベントのリスナーを作成できます。

クライアント側イベントに基づくロジックを呼び出す場合は、カスタム・クライアント・リスナー・メソッドを作成できます。詳細は、「クライアント・イベントのリスニング」を参照してください。クライアント・イベントに基づきサーバー側ロジックを起動する場合、そのロジックを起動するserverListenerタグを追加できます。詳細は、「クライアントからサーバーへのカスタム・イベントの送信」を参照してください。

16.2.6 ダイアログ・イベントに関する必知事項

dialogコンポーネントは、エンド・ユーザーが「OK」「はい」「いいえ」または「取消」ボタンをクリックしたときにdialogEventを生成します。dialogコンポーネントは、エラーまたはそれ以上の重大度のメッセージがページに存在しなければ、エンド・ユーザーが「OK」「はい」または「いいえ」ボタンをクリックしたときに自動的に非表示になります。「取消」ボタンまたは閉じるアイコンを選択するエンド・ユーザーは、親popupコンポーネントを取り消し、ポップアップ取消イベントを生成します。

「OK」「はい」「いいえ」または「取消」ボタンによって返されるdialogEventをインターセプトするようにdialogListener属性を構成できます。「OK」「はい」および「いいえ」ボタンによって返されるdialogEventのみ、サーバーに伝播されます。「取消」ボタン、[Esc]キーおよび閉じるアイコンによって返されるdialogEventは、クライアント・ダイアログ・イベントをキューに入れ、サーバーに伝播しません。

dialogコンポーネントを起動するアクション・コンポーネントのactionListenerが、dialogコンポーネントから制御が戻った後にアクション(たとえば、inputTextコンポーネントの更新)を実行するように構成されている場合は、inputTextコンポーネントに対してresetValue()を呼び出すことも必要になります。これが必要になるのは、アクション・コンポーネントのimmediateの値がtrueに設定されている場合です。

dialogコンポーネントおよびpopupコンポーネントによって起動されるイベントの詳細は、Oracle ADF Facesタグ・リファレンスを参照してください。

16.2.7 アニメーションおよびポップアップに関する必知事項

ポップアップを表示するためにpopupコンポーネント内でレンダリングするdialogpanelWindowmenuおよびnoteWindowコンポーネントは、レンダリング時にアニメーションを使用できます。「アニメーションの有効化」で説明されているように、アプリケーションのtrinidad-config.xmlファイルで、<animation-enabled>要素をtrueに設定することにより、アプリケーションのこれらのコンポーネントに対してアニメーションを有効化します。

さらに、アプリケーションのADFスキンの-tr-animateおよび-tr-open-animation-durationADFスキン・プロパティに対して値を書き込むことにより、これらのコンポーネントに対してアニメーションをカスタマイズまたは無効化を行うこともできます。次の例では、アプリケーションのmenuコンポーネントに対してアニメーションを許可し、dialogコンポーネントに対してアニメーションを無効化する方法を示しています。

/** Animate menu components and specify 10 seconds as the duration to open a menu or a popup menu */
af|menu {
    -tr-open-animation-duration: 10000; 
    -tr-animate: true;
}

/** Disable animation for dialog components */
af|dialog {
    -tr-animate: false;
}

popupコンポーネントの特定のインスタンスのアニメーション動作は、次のリストに示すように、popupコンポーネントのanimateプロパティに適切な値を設定することによって構成できます。

  • default: アプリケーションのtrinidad-config.xmlファイル内の<animation-enabled>要素およびアプリケーションのADFスキンのADFスキン・プロパティがポップアップ・コンポーネントのアニメーション動作を決定します。

  • false: trinidad-config.xmlファイルまたはアプリケーションのADFスキンでアプリケーションに対して構成したアニメーション設定に関係なく、ポップアップのアニメーションを無効にします。たとえば、menuコンポーネントを表示するpopupコンポーネントにこの値を設定すると仮定します。アニメーションが有効化され、前述のコード例に示されたmenuコンポーネントにADFスキン・プロパティが含まれていても、特定のポップアップ・メニューに対して、アニメーションが無効化されます。

  • true: アプリケーションのADFスキン内の-tr-animate: falseエントリをオーバーライドします。たとえば、dialogコンポーネントをレンダリングするpopupコンポーネントに対してanimateプロパティをtrueに設定した場合、前述のコード例に示されたdialogコンポーネントにADFスキン・プロパティが構成されていても、ポップアップ・ダイアログは、レンダリング時にアニメーションを使用します。

アニメーションのADFスキン・プロパティの詳細は、Oracle ADF Facesスキン・セレクタ・タグ・リファレンスを参照してください。

16.3 ポップアップの表示動作の制御

ポップアップの表示方法、自動的に消去されるまでにpopupコンポーネントが表示される時間、フォーカスをメイン・ウィンドウまたはポップアップ・ウィンドウのどちらに当てるか、および画面上でpopupコンポーネントを位置合せする場所を制御できます。これらの動作は、コンポーネントのプロパティを変更することによって変更できます。

  • AutoDismissalTimeout これはアプリケーションが自動的に消去するまでにpopupコンポーネントを表示する秒数です。デフォルトの自動消去動作では、フォーカスが起動元またはポップアップのコンテンツから変更されると、コンポーネントが閉じられます。

    popupコンポーネントの時間の指定の詳細は、ポップアップ・コンポーネントを自動的に消去する方法を参照してください。

    注意:

    popupコンポーネントおよびnoteWindowにこの属性を指定した場合は、noteWindowAutoDismissalTimeout属性が優先されます。
  • 固定 AutoDismissalTimeoutプロパティに有効な値を指定した場合は、新しいピン・アイコンがダイアログのヘッダーで使用可能になります。ピン・アイコンをクリックすると、自動消去動作が取り消され、Behaviourセクションで再び値を変更するまで再度有効になりません。

    注意:

    この機能は、dialogコンポーネントおよびpanelwindowコンポーネントにのみ使用できます。
  • フォーカスの移動 新しいプロパティInitialFocusを使用でき、値にAutoまたはNoneを設定できます。Noneを指定した場合、ダイアログを開いたときに、フォーカスがメイン・ページに残ります。Autoを指定した場合は、フォーカスがメインからダイアログに変更されます。デフォルト値はAutoです。

    注意:

    • この機能は、dialogコンポーネントおよびpanelwindowコンポーネントにのみ使用できます。

    • このプロパティは非モーダル・ダイアログでのみ有効です。

    • [Ctrl]+[Alt]+[W]キーの組合せを使用して、ウィンドウ間でフォーカスを切り替えることができます。

  • 位置指定 デフォルトでは、popupコンポーネントは画面の中央に表示されます。AlignIdプロパティに値を指定すると、コンポーネントはコンポーネントに対する相対位置に配置されます。

16.3.1 ポップアップ・コンポーネントを自動的に消去する方法

フォーカスが起動元またはポップアップのコンテンツから移動されると、デフォルトでは、アプリケーションはpopupコンポーネントを自動的に閉じます。ただし、アプリケーションが自動的に閉じるまでにpopupコンポーネントが表示される時間(秒単位)を指定することもできます。

始める前に:

他のADF Faces機能を使用して追加できる機能について理解することが役立つ場合もあります。詳細は、「ポップアップ・ダイアログ、メニューおよびウィンドウの追加機能」を参照してください。

popupコンポーネントに時間を指定するには:

  1. 「構造」ウィンドウで、時間を指定するaf:popupコンポーネントを右クリックし、「プロパティに移動」を選択します。
  2. 「プロパティ」ウィンドウの「動作」セクションを開いて「AutoDismissalTimeout」プロパティで秒数を指定します。
指定した値によって、デフォルトの自動消去動作がオーバーライドされます。このオーバーライドは、エンド・ユーザーがポップアップ・コンポーネントのコンテンツの上にマウスを移動すると、取り消されますが、これは、この操作により、自動消去動作がポップアップ・コンポーネントのデフォルトの自動消去動作に戻るためです。

16.3.2 ポップアップ・コンポーネントが自動消去されるときの処理内容

AutoDismissalTimeout属性に指定された時間の後にインライン・ポップアップが自動的に消去されると、システムはクライアントのみのAdfPopupClosedEventイベントを生成します。このイベントはサーバーに同期して戻されません。カスタム・データをサーバーに送信して戻すには、JavaScriptのコードを記述する必要はなく、次の例に示されているように既存のaf:serverListenerタグを活用してそれをaf:clientListenerタグにバインドする新しいリスナーを作成します。

<af:popup id="test" contentDelivery="lazyUncached">
   <af:dialog title="test">
      <af:inputText id="testInput" label="test" binding="#{mybean.testInput}"/>
   </af:dialog>
   <af:clientServerListener method="#{mybean.clientDelegateListener}" immediate="true" triggerType="click"/>
</af:popup>

16.4 ポップアップの宣言的な呼出し

ADF Facesのコンポーネントでは、ポップアップの表示または非表示にJavaScriptは不要です。showPopupBehaviorタグは宣言的なソリューションを提供するため、popupコンポーネントを開くJavaScriptを作成したり、スクリプトをpopupコンポーネントに登録したりする必要はありません。クライアントの動作タグの詳細は、「ADF Facesのクライアントの動作タグの使用」を参照してください。

showPopupBehaviorタグは、指定されたイベント(たとえば、アクション・コンポーネントのactionEventshowDetailコンポーネントのdisclosureEvent)をリスニングします。ただし、showPopupBehaviorタグはサーバーへのそのイベントの配信も取り消します。したがって、showPopupBehaviorタグがリスニングするイベントに基づいてサーバー側ロジックを起動する必要がある場合は、JavaScriptを使用してポップアップを起動するか、「ポップアップのプログラムによる呼出し」の説明に従ってpopupコンポーネントをプログラムで起動する必要があります。

16.4.1 af:showPopupBehaviorタグを使用してポップアップを宣言的に呼び出す方法

showPopupBehaviorタグは、ポップアップを呼び出すコンポーネントとともに使用します。たとえば、ダイアログを呼び出すbuttonコンポーネントや、右クリックされたときにコンテキスト・メニューを呼び出すinputTextコンポーネントです。

始める前に:

popupコンポーネントを宣言的に呼び出す場合は、使用可能な構成オプションに関する知識が役立つ場合があります。詳細は、「ポップアップの宣言的な呼出し」を参照してください。

他のADF Faces機能を使用して追加できる機能について理解することが役立つ場合もあります。詳細は、「ポップアップ・ダイアログ、メニューおよびウィンドウの追加機能」を参照してください。

次のタスクを完了する必要があります。

showPopupBehaviorタグを使用する手順:

  1. 「コンポーネント」ウィンドウの「操作」パネルの「動作」グループから、「ポップアップ表示動作」をドラッグし、ポップアップを呼び出すコンポーネントに子としてドロップします。
  2. 「プロパティ」ウィンドウで、PopupIdプロパティのフィールドにマウスを置いて表示されたアイコンをクリックし、表示されたコンテキスト・メニューで「編集」を選択します。「プロパティの編集: PopupId」ダイアログを使用して、呼び出すポップアップ・コンポーネントを選択し、「OK」をクリックします。
  3. 「プロパティ」ウィンドウの「TriggerType」ドロップダウン・メニューで、ポップアップを呼び出すトリガーを選択します。デフォルトはactionで、アクション・コンポーネントに対して使用できます。マウスが右クリックされたときにポップアップをトリガーするにはcontextMenuを使用します。カーソルがコンポーネント上に置かれたときにポップアップをトリガーするにはmouseHoverを使用します。カーソルがコンポーネントから離れるとポップアップが閉じます。ポップアップをトリガーできるコンポーネントおよびマウス/キーボード・イベントの詳細なリストは、Oracle ADF Facesタグ・リファレンスshowPopupBehaviorタグのドキュメントを参照してください。

    注意:

    showPopupBehaviorタグのtriggerType属性に対して選択されたイベントは、サーバーに配信されません。このイベントに基づいてサーバー側ロジックを起動する必要がある場合は、JavaScriptまたはカスタム・イベントを使用してポップアップを呼び出すか(「クライアントからサーバーへのカスタム・イベントの送信」を参照)、ポップアップをプログラムで呼び出す必要があります(「ポップアップのプログラムによる呼出し」を参照)。

  4. AlignIdプロパティのフィールドにマウスを置いて表示されたアイコンをクリックし、表示されたコンテキスト・メニューで「編集」を選択します。「プロパティの編集: AlignId」ダイアログを使用して、ポップアップの位置合せの基準となるコンポーネントを選択します。
  5. 「位置合せ」ドロップダウン・メニューから、前の手順で選択したコンポーネントを基準としてポップアップを配置する方法を選択します。

    注意:

    dialogおよびpanelWindowコンポーネントでは、対応するポップアップをユーザーが移動できるため、alignIdまたはalign属性は不要です。AlignIdを設定した場合、値はダイアログまたはウィンドウの位置を手動でドラッグ・アンド・ドロップすることでオーバーライドされます。AlignIdまたはAlignに値が入力されていない場合、ダイアログまたはウィンドウはブラウザの中央に開きます。

    また、triggerType属性がcontextMenuに設定されている場合、配置は常にマウスの位置に基づきます。

16.4.2 af:showPopupBehaviorタグを使用してポップアップを呼び出した場合の処理

設計時に、「プロパティ」ウィンドウで選択したソース・ファイルの中に、対応する値がJDeveloperによって生成されます。次の例に示すサンプル・コードでは、ボタン「Show Popup」がクリックされると、id属性がpopup2であるaf:popupコンポーネントにテキストが表示されます。

<af:button text="Click me" clientComponent="true" id="popupButton2">
    <showPopupBehavior popupId="popup2" alignId="popupButton2" align="afterStart"/>
</af:button>
...
<af:popup id="popup2">
   <af:panelGroupLayout layout="vertical">
      <af:outputText value="Some"/>
      <af:outputText value="popup"/>
      <af:outputText value="content"/>
   </af:panelGroupLayout>
</af:popup>

この例のコードはADF Facesに、ポップアップの内容をid属性で指定されたbuttonに合せることと、配置の位置としてafterStart(ポップアップをボタンのすぐ下に配置する)を使用することを指示するものです(図16-5を参照)。

図16-5 ボタンおよびポップアップ・コンテンツ

この図は周囲のテキストで説明しています

16.5 ポップアップのプログラムによる呼出し

アクション・コンポーネントによって生成されたactionEventへの応答として、プログラムでポップアップを表示、非表示または取り消すことができます。actionEventをサーバーに即時に配信してサーバー側ロジックを起動できるようにし、サーバー側ロジックの起動結果に対してポップアップを表示、非表示または取り消すことができるようにするには、この機能を実装します。

ここで説明するポップアップのプログラムによる呼出しは、showPopupBehaviorタグがactionEventをサーバーに即時に配信しない、「ポップアップの宣言的な呼出し」で説明したポップアップの呼出し方法とは異なります。

「ポップアップの宣言的な作成」で説明しているように、popupコンポーネント内のコンポーネントの1つ(dialogpanelWindowmenuまたはnoteWindow)を配置することで必要なポップアップのタイプを作成します。起動するときに、popupコンポーネントが正しいコンテキストにあることを確認します。これを簡単に行う方法の1つは、次の例に示すようにページのバッキングBeanにバインドすることです。

<af:popup 
  id="p1" 
  binding="#{mybean.popup}"
  ...
/>

これが完了したら、アクション・コンポーネントのactionListener属性がpopupコンポーネントを参照するように構成します。具体的には、ポップアップ・バインディングのアクセッサを呼び出します。

ポップアップの呼出し、取消または非表示を行うバッキングBeanメソッドのコードを作成します。次の例に示すshowPopupバッキングBeanメソッドでは、HINT_LAUNCH_IDヒントを使用してアクション・コンポーネントを指定しています。このコンポーネントからactionEventがこのメソッドに渡されます。p1を使用して参照されているポップアップに対して、showメソッドを呼び出します。

public void showPopup(ActionEvent event) {
{
   FacesContext context = FacesContext.getCurrentInstance();
   UIComponent source = (UIComponent)event.getSource();
   String alignId = source.getClientId(context);
   RichPopup.PopupHints hints = new RichPopup.PopupHints();
      hints.add(RichPopup.PopupHints.HintTypes.HINT_ALIGN_ID,source)
      .add(RichPopup.PopupHints.HintTypes.HINT_LAUNCH_ID,source)
      .add(RichPopup.PopupHints.HintTypes.HINT_ALIGN,
      RichPopup.PopupHints.AlignTypes.ALIGN_AFTER_END);
   p1.show(hints);
}

例16-1に、actionEventに対する応答でポップアップを取り消すバッキングBeanメソッドを示し、例16-2に、actionEventに対する応答でポップアップを非表示にするバッキングBeanメソッドを示します。次の例のp1オブジェクトは、次のパッケージのRichPopupクラスのインスタンスを参照します。

oracle.adf.view.rich.component.rich.RichPopup

RichPopupの詳細は、Oracle ADF Faces Java APIリファレンスを参照してください。

例16-1 ポップアップを取り消すバッキングBeanメソッド

public void cancelPopupActionListener(ActionEvent event) {
   FacesContext context = FacesContext.getCurrentInstance();
   p1.cancel();
  }

例16-2 ポップアップを非表示にするバッキングBeanメソッド

public void hidePopupActionListener(ActionEvent event) {
   FacesContext context = FacesContext.getCurrentInstance();
   p1.hide();
 }

16.5.1 ポップアップをプログラムで呼び出す方法

ポップアップの表示、取消または非表示を行うバッキングBeanメソッドを参照するように、アクション・コンポーネントのactionListener属性を構成します。

始める前に:

popupコンポーネントをプログラムで呼び出す場合は、使用可能な構成オプションに関する知識が役立つ場合があります。詳細は、「ポップアップのプログラムによる呼出し」を参照してください。

他のADF Faces機能を使用して追加できる機能について理解することが役立つ場合もあります。詳細は、「ポップアップ・ダイアログ、メニューおよびウィンドウの追加機能」を参照してください。

次のタスクを完了する必要があります。

ポップアップをプログラムで呼び出す手順:

  1. 「コンポーネント」ウィンドウの「一般コントロール」パネルから、アクション・コンポーネントをJSFページにドラッグ・アンド・ドロップします。たとえば、「ボタン」です。
  2. 「プロパティ」ウィンドウで、「動作」セクションを開いて次の属性を設定します。
    • PartialSubmit: trueを選択すると、ユーザーがアクション・コンポーネントをクリックした後にFusion Webアプリケーションのページ全体がレンダリングされることはなくなります。デフォルト値(false)を指定すると、エンド・ユーザーがアクション・コンポーネントを呼び出した後にアプリケーションのページ全体がレンダリングされます。ページ・レンダリングの詳細は、「部分ページ・コンテンツの再レンダリング」を参照してください。

    • ActionListener: 評価した結果がバッキングBeanメソッドとなるEL式を指定します。実行時にエンド・ユーザーがアクション・コンポーネントを呼び出したときに、このメソッドのロジックが実行されます。

  3. 手順2でアクション・コンポーネントがactionEventを渡すときに呼び出される、バッキングBeanのロジックをプログラミングします。

16.5.2 ポップアップをプログラムで呼び出した場合の処理

実行時に、エンド・ユーザーは、ポップアップの表示、取消または非表示を行うためにサーバー側メソッドを呼び出すように構成されているアクション・コンポーネントを呼び出すことができます。たとえば、図16-6に、popupコンポーネントの内部にレンダリングするpanelWindowコンポーネントを示します。panelWindowコンポーネントは、2つのボタン(「取消」および「非表示」)を公開します。前者はcancelメソッド、後者はhideメソッドを呼び出します。ページのtableコンポーネントのSupplierName列内にレンダリングされているlinkコンポーネントをエンド・ユーザーが呼び出すと、ポップアップが表示されます。

図16-6 サーバー側メソッドによって呼び出されるpopupコンポーネント

この図は周囲のテキストで説明しています

16.6 ポップアップへのコンテキスト情報の表示

ユーザーがページでタスクを完了するのにより多くの情報が必要だが、ページにアクセスするたびに必要にはならない情報や、情報を表示するためにダイアログを起動する複数のボタンによって、ページが乱雑になるのは望ましくない場合があります。コンポーネントの右クリックで起動するポップアップに情報を表示することも考えられますが、その情報をポップアップで参照できることがユーザーからはわかりません。

contextInfoコンポーネントでは、ポップアップに追加情報を表示し、追加情報が使用可能であることをユーザーに通知することもできます。contextInfoコンポーネントを、コンテキスト情報をサポートするコンポーネントのコンテキスト・ファセットに配置すると、図16-7に示すように、小さなオレンジ色の正方形がコンポーネントの左上に表示されます。

図16-7 contextInfoに表示される正方形

この図は周囲のテキストで説明しています

ユーザーが正方形の上にカーソルを置くと、図16-8に示すようにノート・アイコンの付いた大きな三角形とツールチップが表示され、追加情報が使用可能であることが示されます。

図16-8 contextInfoコンポーネントは追加情報が使用可能であることを示す

この図は周囲のテキストで説明しています

showPopupBehaviorタグがcontextInfoコンポーネントの子の1つであるため、参照されるポップアップはユーザーが情報アイコンをクリックしたときに表示されます(図16-9を参照)。

図16-9 contextInfoコンポーネントから起動されたダイアログ

この図は周囲のテキストで説明しています

16.6.1 コンテキスト情報の作成方法

showPopupBehaviorコンポーネントをcontextInfoコンポーネントの子として使用すると、ポップアップ・コンポーネントを、contextInfoコンポーネントを含むコンポーネントに位置揃えできます。

始める前に:

  1. contextInfoコンポーネントの親になるコンポーネントを作成します。次のコンポーネントではcontextInfoコンポーネントがサポートされます。

    • column

    • link

    • inputComboboxListOfValues

    • inputListOfValues

    • inputText

    • outputFormatted

    • outputText

    • selectOneChoice

  2. 「ポップアップの宣言的な作成」の説明に従って、表示するポップアップを作成します。

  3. 他のADF Faces機能を使用して追加できる機能について理解することが役立つ場合もあります。詳細は、「ポップアップ・ダイアログ、メニューおよびウィンドウの追加機能」を参照してください。

contextInfoコンポーネントを使用する手順:

  1. 「コンポーネント」ウィンドウの「一般コントロール」パネルから、「コンテキスト情報」をドラッグし、追加情報のアイコンを表示するコンポーネントのContextファセットにドロップします。

    ヒント:

    ファセットがビジュアル・エディタに表示されていない場合は、「構造」ウィンドウでコンポーネントを右クリックして「ファセット - コンポーネント名」→「コンテキスト」を選択します。ページで使用されているファセットは、ファセット名の前にチェックマークが表示されます。

  2. contextInfoコンポーネントが表示されるときにサーバー側ロジックを実行する必要がある場合は、「プロパティ」ウィンドウの「動作」セクションを開いて、イベントを処理できるハンドラにContextInfoListenerをバインドします。

    注意:

    showPopupBehaviorタグを使用してポップアップを起動する場合は、サーバーへのcontextInfoEventの配信が取り消されます。このイベントに基づいてサーバー側ロジックを起動する必要がある場合は、「クライアントからサーバーへのカスタム・イベントの送信」の説明に従って、JavaScriptまたはカスタム・イベントを使用してポップアップを起動する必要があります。

  3. 「コンポーネント」ウィンドウの「操作」パネルの「動作」グループから、「ポップアップ表示動作」をドラッグし、contextInfoに子としてドロップします。
  4. エディタでshowPopupBehaviorタグが選択されている状態で、「プロパティ」ウィンドウで属性を設定します(「af:showPopupBehaviorタグを使用してポップアップを宣言的に呼び出す方法」の説明を参照)。TriggerTypeには、contextInfoと入力してください。

16.7 インライン・ポップアップの自動取消の制御

popupコンポーネントを他の多数のコンポーネントとともに使用して、インライン・ポップアップを作成できます。つまり、インライン・ウィンドウ、ダイアログおよびポップアップ・メニューです。他のコンポーネントには次のものがあります。

デフォルトでは、Fusion Webアプリケーションは、インライン・ポップアップを定義するメタデータが置換された場合にインライン・ポップアップを自動的に取り消します。この状況が発生するシナリオの一部を次に示します。

  • partialSubmitプロパティがfalseに設定されているアクション・コンポーネントの呼出し。Fusion Webアプリケーションは、このようなアクション・コンポーネントを呼び出した後でページ全体をレンダリングします。対照的に、アクション・コンポーネントのpartialSubmitプロパティがtrueに設定されている場合は、Fusion Webアプリケーションはコンテンツを部分的にレンダリングします。ページ・レンダリングの詳細は、「部分ページ・コンテンツの再レンダリング」を参照してください。

  • エンド・ユーザーがコンテンツを表示または非表示にするための切替えアイコンをレンダリングするコンポーネントは、popupコンポーネントをホストします。たとえば、showDetailItemコンポーネントやpanelTabbedコンポーネントなどです。切替えアイコンをレンダリングするコンポーネントの使用の詳細は、「コンテンツの動的な表示および非表示」を参照してください。

  • Fusion Webアプリケーションがインライン・ポップアップを表示するときにフェイルオーバーが発生します。フェイルオーバー時に、Fusion Webアプリケーションはページ全体を置換します。

前のリストで説明したデフォルトの動作は、インライン・ポップアップ・コンポーネントの自動取消を無効にすることで変更できます。これは、前述のいずれかのイベントが発生した場合にFusion Webアプリケーションがインライン・ポップアップを自動的に取り消さないことを意味します。かわりに、Fusion Webアプリケーションはインライン・ポップアップをリストアします。

16.7.1 インライン・ポップアップの自動取消を無効にする方法

popupコンポーネントのautoCancelプロパティをdisabledに設定することで、インライン・ポップアップの自動取消を無効にします。

始める前に:

他のコンポーネントが機能に与える影響を理解することが役立つ場合があります。詳細は、「インライン・ポップアップの自動取消の制御」を参照してください。

他のADF Faces機能を使用して追加できる機能について理解することが役立つ場合もあります。詳細は、「ポップアップ・ダイアログ、メニューおよびウィンドウの追加機能」を参照してください。

インライン・ポップアップの自動取消を制御する手順:

  1. 「構造」ウィンドウで、自動取消動作を構成するaf:popupコンポーネントを右クリックし、「プロパティに移動」を選択します
  2. 「プロパティ」ウィンドウの「共通」セクションを開き、「AutoCancel」ドロップダウン・リストで「disabled」を選択します。

16.7.2 インライン・ポップアップの自動取消を無効にした場合の処理

次の例に示すように、JDeveloperは、af:popupコンポーネントのautoCancelプロパティの値をdisabledに設定します。実行時に、Fusion Webアプリケーションは、ページを再レンダリングするコマンドの呼出し前にインライン・ポップアップが表示された場合に、ページを再レンダリングした後でインライン・ポップアップをリストアします。

<af:popup id="p1" autoCancel="disabled">
  ...
</af:popup>

16.8 ポップアップの入力フィールドのリセット

resetListenerコンポーネントをpopupコンポーネントとともに使用すると、ユーザーが入力フィールドの入力値をリセットできるようになります。popupコンポーネントにレンダリングする入力コンポーネントに対してこの機能を実装するユースケースを次に示します。

  • エンド・ユーザーに、前に入力した不適切な値のリセットを許可する

  • 値を削除する。この場合、エンド・ユーザーが入力した値をアプリケーションがサーバーに送信する前に、popupコンポーネントがpopupCanceledEventを呼び出します。

    popupCancelEventを呼び出すエンド・ユーザー操作の例としては、ボタンのクリック(たとえば「閉じる」というラベルの付いたボタン)、ポップアップ・ダイアログのタイトル・バーにある取消しアイコンのクリック、[Esc]キーの押下などがあります。

    popupコンポーネントの構成方法に応じて、データがクライアントにキャッシュされることがあります。たとえば、popupコンポーネントのcontentDelivery属性をimmediateに設定した場合、アプリケーションは常にデータをクライアントにキャッシュします。

contentDelivery属性に対して選択した設定によってpopupコンポーネントのコンテンツ配信方針がどのように決定されるかの詳細は、「ポップアップの宣言的な作成」および「実行時に行われる処理: popupコンポーネントのイベント」を参照してください。

「ポップアップの宣言的な呼出し」に、contentDelivery属性がimmediateに設定され、「ダイアログの作成方法」で説明したようにユーザーのポップアップがdialogEventsを生成する事前構成済のコントロールとともにdialogコンポーネントをレンダリングするpopupコンポーネントのメタデータを示します。このシナリオでは、エンド・ユーザーが入力したデータはクライアントにキャッシュされます。アプリケーションは、リセットするデータをサーバーに送信しません。また、dialogコンポーネントによってレンダリングされる事前構成済コントロールは、検証エラーが発生した場合にポップアップが閉じない原因となることがあります。

popupコンポーネントとは無関係にresetListenerコンポーネントを使用する方法の詳細は、「入力フィールドをリセットするためのアクション・コンポーネントの使用方法」を参照してください。

注意:

resetListenerコンポーネントのtype属性をpopupCanceledに設定すると、popupコンポーネントのresetEditableValues属性をwhenCanceledに設定するのと同じ機能が提供されます。popupコンポーネントのresetEditableValues属性の設定の詳細は、「ダイアログの作成方法」を参照してください。

例16-3 popupコンポーネントのresetListenerタグ

<af:popup id="popup" contentDelivery="immediate">
  <af:resetListener type="popupCanceled"/>
</af:popup>

16.8.1 ポップアップの入力フィールドのリセット方法

エンド・ユーザーがポップアップの入力フィールドのデータをnullにリセットできるようにするには、resetListenerコンポーネントのtype属性をpopupCanceledに設定します。

始める前に:

popupコンポーネントでこの機能を構成できるユースケースを理解することが役立つ場合があります。詳細は、「ポップアップの入力フィールドのリセット」を参照してください。

他のADF Faces機能を使用して追加できる機能について理解することが役立つ場合もあります。詳細は、「ポップアップ・ダイアログ、メニューおよびウィンドウの追加機能」を参照してください。

ポップアップの入力フィールドをリセットする手順:

  1. 「ポップアップの宣言的な作成」の説明に従って、必要なポップアップ・ダイアログのタイプを作成します。
  2. 「コンポーネント」ウィンドウの「操作」パネルの「リスナー」グループから、リセット・リスナーpopupコンポーネントに直接の子としてドラッグ・アンド・ドロップします。
  3. JDeveloperが表示する「リセット・リスナーの挿入」ダイアログで、popupCanceledresetListenerコンポーネントが応答するイベントのタイプとして入力します。

    「リセット・リスナーの挿入」ダイアログで「ヘルプ」をクリックして、サポートされる値のリストを表示します。

16.8.2 入力フィールドをリセットするようにポップアップを構成した場合の処理

popupコンポーネントとresetListenerコンポーネントでエンド・ユーザーがpopupコンポーネントの入力フィールドをnullにリセットできるように構成した場合、JDeveloperは例16-4に示すようなエントリを作成します。

図16-10に示すように、実行時にpopupCanceledイベントを生成するエンド・ユーザー操作により、resetListenerコンポーネントはpopupコンポーネントの入力フィールドの値をnullにリセットします。

図16-10 入力フィールドをリセットするpopupコンポーネント

この図は周囲のテキストで説明しています

例16-4 リセット・リスナーを使用して入力フィールドをリセットするように構成されたpopupコンポーネント

<af:popup id="popupDialog" contentDelivery="lazyUncached" 
  popupCanceledListener="#{demoInput.resetPopupClosed}">
    <af:dialog title="Enter an Incorrect Value">
      <af:inputText id="it2" label="Always-incorrect Value" value="#{demoInput.value}">
        <f:validator binding="#{demoInput.obstinateValidator2}"/>
      </af:inputText>
    </af:dialog>
    <af:resetListener type="popupCanceled"/>
</af:popup>