<af:dialog>

af:dialog dialog dialog

UIComponentクラス: oracle.adf.view.rich.component.rich.RichDialog
コンポーネントのタイプ: oracle.adf.RichDialog

dialogコントロールはレイアウトの要素で、「ダイアログ」ウィンドウに子を表示します。また「OK」、「はい」、「いいえ」および「取消」アクションがアクティブ化されると、DialogEventが配信されます。af:dialogは、af:popupコンポーネントの内部に配置され、af:popupの直下の子にする必要があります。ダイアログを表示するには、af:showPopupBehaviorタグを使用するか、またはJavascriptからプログラムによってpopupクライアント・コンポーネントでshow()をコールします。ページにエラーの重大度以上のfacesメッセージがない場合、「OK」、「はい」または「いいえ」ボタンを選択すると、ダイアログは自動的に非表示になります。「取消」ボタンまたは閉じるアイコンを選択すると、ポップアップが取り消され、ポップアップ取消イベントがアクティブ化されます。

ダイアログ・イベント

クライアントのダイアログ・イベント

dialogタイプのボタン構成を使用すると、アクション結果タイプであるok、yes、noおよびcancelは、dialogタイプのリスナーを使用してクライアント側でインターセプトできます。ok、yes、noイベントのみがサーバーに伝播されます。「取消」ボタンおよび閉じるアイコンを選択すると、クライアントのダイアログ・イベントがアクティブ化されますが、cancelの結果によりDialogEventはサーバーに送信されません。この伝播処理はRCFイベント同様、JSイベント・オブジェクトでcancel()をコールするとブロックできます。タイプがdialogのaf:clientListenerを使用してダイアログ・クライアント・イベントをリスニングします。

...
...
<f:facet name="metaContainer">
  <f:verbatim>
    
  </f:verbatim>
</f:facet>
<af:form>
  <af:panelGroupLayout>
     <af:selectOneRadio label="Gender">
        <af:selectItem label="Male" value="M"/>
        <af:selectItem label="Female" value="F"/>
        <af:clientListener method="handleValueChange" type="valueChange"/>
        <af:clientAttribute name="popupId" value="confirmationDialog"/>
     </af:selectOneRadio>
  </af:panelGroupLayout>
  <af:popup id="confirmationDialog">
    <af:dialog title="Confirm Change" type="yesNo">
       <f:verbatim>
Would you like to save the change?</f:verbatim> <af:clientListener method="handleDialog" type="dialog"/> </af:dialog> </af:popup> </af:form>

サーバーのダイアログ・イベント

ダイアログ・イベントがサーバーに伝播され、サーバーでイベントが処理されると、ダイアログはクライアント側で自動的に閉じます。サーバー側でダイアログ・イベントの処理中にエラーが発生すると(特に、エラーの重大度以上のfacesメッセージが表示されると)、ダイアログは閉じません。

...
...
<af:form>
  <af:panelGroupLayout>
     <af:selectOneRadio label="Gender" binding="#{sharedPopup.genderComponent}" 
          valueChangeListener="#{sharedPopup.handleValueChange}" 
          autoSubmit="true"
          value="#{sharedPopup.gender}">
        <af:selectItem label="Male" value="M"/>
        <af:selectItem label="Female" value="F"/>
     </af:selectOneRadio>
  </af:panelGroupLayout> 
  <af:popup id="confirmationDialog" binding="#{sharedPopup.popupComponent}">
    <af:dialog title="Confirm Change" type="yesNo" dialogListener="#{sharedPopup.handleDialog}">
       <f:verbatim>
Would you like to save the change?</f:verbatim> </af:dialog> </af:popup> </af:form> ... ... public void handleValueChange(ValueChangeEvent event) { setOldGender((String)event.getOldValue()); FacesContext context = FacesContext.getCurrentInstance(); String popupId = popupComponent.getClientId(context); StringBuilder script = new StringBuilder(); script.append("var popup = AdfPage.PAGE.findComponent('") .append(popupId).append("'); ") .append("if (!popup.isPopupVisible()) { ") .append("var hints = {}; ") .append("popup.show(hints);}"); ExtendedRenderKitService erks = Service.getService(context.getRenderKit(), ExtendedRenderKitService.class); erks.addScript(context, script.toString()); } public void handleDialog(DialogEvent event) { if (event.getOutcome().equals(DialogEvent.Outcome.no)) { setGender(getOldGender()); RequestContext.getCurrentInstance().addPartialTarget(genderComponent); } }

入力コンポーネントのダイアログ内での使用方法

inputTextのような入力コンポーネントの使用中に「取消」ボタンを押しても、これらのコントロールの値はリセットされません。ダイアログを2度目に開くと、古い値が残っています。この値をサーバーの新規の値に合せるには、popupコンポーネントのcontentDeliverylazyUncachedに設定します。lazyUncachedコンテンツ配信タイプに設定すると、ポップアップのコンテンツは再レンダリングされますが、コンポーネントのサーバー側の状態はリセットされません。

ダイアログの「取消」ボタンおよび閉じるアイコンでは、変更内容を保存せずにインライン・ポップアップ・ダイアログが閉じます。ただし、入力コンポーネントでautoSubmitプロパティが有効にされている場合は、ダイアログの取消し動作がオーバーライドされます。

カスタム・ダイアログ・ボタンの使用

af:dialogコンポーネントでは、buttonBarファセットが提供されています。これは、ダイアログのフッターにコマンド・コンポーネントを追加するために使用するコンテナです。カスタム・ボタンは、typeプロパティで指定された事前構成済ボタンの後ろに追加されます。これらのコマンド・ボタンは、部分送信のコマンドである必要があります。カスタム・ボタンでは、関連付けられたdialogListenerはキューされませんが、カスタム・アクション・リスナーが必要とされます。カスタム・ボタンでは、ダイアログは自動的に閉じません。クライアントにスクリプト・フラグメントを送信してポップアップを閉じるロジックを追加する必要があります。

...
...
<af:popup >
    <af:dialog title="Confirm Change" type="none" >
       <f:verbatim>
Would you like to save the change?</f:verbatim> <f:facet name="buttonBar"> <af:panelGroupLayout layout="horizontal"> <af:commandButton text="Yes" id="yes" actionListener="#{sharedPopup.handleDialog}" partialSubmit="true"/> <af:commandButton text="No" id="no" actionListener="#{sharedPopup.handleDialog}" partialSubmit="true"/> </af:panelGroupLayout> </f:facet> </af:dialog> </af:popup> ... ... public void handleDialog(ActionEvent event) { UIComponent source = (UIComponent)event.getSource(); if (source.getId().equals("no")) { setGender(getOldGender()); RequestContext.getCurrentInstance().addPartialTarget(genderComponent); } FacesContext context = FacesContext.getCurrentInstance(); String popupId = popupComponent.getClientId(context); StringBuilder script = new StringBuilder(); script.append("var popup = AdfPage.PAGE.findComponent('") .append(popupId).append("'); ") .append("if (popup.isPopupVisible()) { ") .append("popup.hide();}"); ExtendedRenderKitService erks = Service.getService(context.getRenderKit(), ExtendedRenderKitService.class); erks.addScript(context, script.toString()); }

取消/閉じるによる消去について

ダイアログの「取消」ボタンおよび閉じるアイコンでは、クライアントのみのダイアログ・イベントがアクティブ化されます。これらの2つのコマンドを使用してダイアログが消去されると、dialogListenerは通知を受けません。ただし、これらのコマンドは、所有するインライン・ポップアップ・コンポーネントのポップアップ取消イベントに変換されます。サーバー側のリスナーは、親のaf:popupコンポーネントで登録可能であり、閉じられたダイアログ・イベントの結果を使用してダイアログが消去されると、起動します。取消による消去の詳細は、af:popupafを参照してください。

イベント

フェーズ 説明
oracle.adf.view.rich.event.DialogEvent アプリケーションの起動 ダイアログがトリガーされると、ダイアログ・イベントが配信されます。
org.apache.myfaces.trinidad.event.AttributeChangeEvent アプリケーションの起動、
リクエスト値の適用
属性変更を記述するために配信されるイベント。属性変更イベントは、プロパティに対するプログラム的な変更については配信されません。アプリケーションの特定のリクエストなしにレンダラによってプロパティが変更される場合にのみ配信されます。属性変更イベントの例には、クライアント側のサイズ変更をサポートしていた列の幅などがあります。

サポートされるファセット

名前 説明
buttonBar 「カスタム」ボタンを含むパネル。

属性

名前 ELのサポート 説明
affirmativeTextAndAccessKey String あり 「OK」および「はい」フッター・ボタンのテキスト・ラベルと、ボタンにすばやくアクセスするためのオプションであるaccessKey文字を同時に設定する属性。accessKeyは、従来のアンパサンド('&')表記法で識別されます。

たとえば、この属性をT&amp;extに設定すると、テキスト・ラベルはText、accessKeyはeに設定されます。

アクセシビリティ上の理由から、アクセス・キー機能はスクリーン・リーダー・モードではサポートされていません。

同じaccessKeyが同じ出力ページにいくつも出現する場合、レンダリング・ユーザー・エージェントはそのキーでアクセスできる各要素を循環します。

このaccessKeyは、ニーモニックと呼ばれることもあります。

accessKeyは、ブラウザ固有およびプラットフォーム固有の修飾子キーによってトリガーされます。ブラウザ固有の意味もあります。たとえば、Internet Explorer 7.0で[Alt]+<accessKey>を押すと、フォーカスが設定されます。一部のオペレーティング・システムのFirefox 2.0では、[Alt]+[Shift]+<accessKey>を押します。他のオペレーティング・システムのFirefox 2.0では、[Control]+<accessKey>を押します。ブラウザによるaccessKeyの処理方法については、ブラウザのドキュメントを参照してください。

attributeChangeListener javax.el.MethodExpression ELのみ 属性変更リスナーへのメソッド・リファレンス。属性変更イベントは、プロパティに対するプログラム的な変更については配信されません。アプリケーションの特定のリクエストなしにレンダラによってプロパティが変更される場合にのみ配信されます。属性変更イベントの例には、クライアント側のサイズ変更をサポートしていた列の幅などがあります。
binding oracle.adf.view.rich.component.<wbr/>rich.RichDialog ELのみ コンポーネント・インスタンスをBean上に格納するELリファレンス。これは、バッキングBeanからコンポーネントへのプログラム的なアクセスを提供するため、またはコンポーネントの作成をバッキングBeanに移動するために使用できます。
cancelTextAndAccessKey String あり 「取消」フッター・ボタンのテキスト・ラベルと、ボタンにすばやくアクセスするためのオプションであるaccessKey文字を同時に設定する属性。accessKeyは、従来のアンパサンド('&')表記法で識別されます。

たとえば、この属性をT&amp;extに設定すると、テキスト・ラベルはText、accessKeyはeに設定されます。

アクセシビリティ上の理由から、アクセス・キー機能はスクリーン・リーダー・モードではサポートされていません。

同じaccessKeyが同じ出力ページにいくつも出現する場合、レンダリング・ユーザー・エージェントはそのキーでアクセスできる各要素を循環します。

このaccessKeyは、ニーモニックと呼ばれることもあります。

accessKeyは、ブラウザ固有およびプラットフォーム固有の修飾子キーによってトリガーされます。ブラウザ固有の意味もあります。たとえば、Internet Explorer 7.0で[Alt]+<accessKey>を押すと、フォーカスが設定されます。一部のオペレーティング・システムのFirefox 2.0では、[Alt]+[Shift]+<accessKey>を押します。他のオペレーティング・システムのFirefox 2.0では、[Control]+<accessKey>を押します。ブラウザによるaccessKeyの処理方法については、ブラウザのドキュメントを参照してください。

cancelVisible boolean あり 「取消」ボタンを可視可能にするかどうかを指定する値。タイプ属性がokCancelと同じでない場合、これは無視されます。
clientComponent boolean あり クライアント側のコンポーネントが生成されるかどうか。このフラグを設定してもしなくてもコンポーネントは生成されますが、クライアントJavascriptがコンポーネント・オブジェクトを必要とする場合、コンポーネントの存在を保証するにはtrueに設定する必要があります。現在デフォルトで生成されるクライアント・コンポーネント・オブジェクトは、将来は存在しない可能性があります。このフラグを設定することがコンポーネントの存在を保証する唯一の方法であり、クライアントは暗黙的な動作に依存できません。ただし、このフラグの設定にはパフォーマンス・コストが伴うため、絶対に必要でないかぎり、クライアントではクライアント・コンポーネントを有効にすることを避ける必要があります。
closeIconVisible boolean あり 閉じるアイコンを表示するかどうかを示します。
customizationId String あり この属性は推奨されていません。永続的なカスタマイズを適用するには、id属性を使用する必要があります。この属性は、次のリリースでは削除されます。
dialogListener javax.el.MethodExpression ELのみ ダイアログ・リスナー・メソッドへのメソッド・レファレンス
helpTopicId String あり helpProviderでトピックを参照するために使用するID。指定されている場合、タイトル・バーにヘルプ・アイコンが表示されます。
id String なし コンポーネントの識別子。識別子は、HTMLで許可される構文のサブセットに準拠している必要があります。
  • 長さゼロの文字列は指定しないでください。
  • 最初の文字は、ASCII文字(A-Za-z)またはアンダースコア(_)にする必要があります。
  • 後続の文字は、ASCII文字または数字(A-Za-z0-9)、アンダースコア(_)またはダッシュ(-)にする必要があります。
inlineStyle String あり このコンポーネントに対して使用するCSSスタイル。これは、基本スタイルの変更用です。inlineStyleは、コンポーネントのルートDOM要素に適用されるCSSスタイルのセットです。inlineStyleのCSSプロパティが対象となるDOM要素に影響を与えない場合は、スキンを作成し、特定のDOM要素をターゲットにしたスキニング・キーを使用する必要があります(::label、::icon-styleなど)。
modal boolean あり ダイアログがモーダルのとき、デフォルトはtrueです。モーダルのダイアログでは、ダイアログが閉じるまでユーザーはベース・ページを変更できません。非モーダルのダイアログでは、ユーザーがベース・ページを変更でき、ベース・ページから別のページにナビゲートすると、ダイアログが閉じます。
noTextAndAccessKey String あり 非フッター・ボタンのテキスト・ラベルとボタンにすばやくアクセスするためのオプションであるaccessKey文字を同時に設定する属性。accessKeyは従来のアンパサンド('&')表記を使用して識別されます。

たとえば、この属性をT&amp;extに設定すると、テキスト・ラベルはText、accessKeyはeに設定されます。

アクセシビリティ上の理由から、アクセス・キー機能はスクリーン・リーダー・モードではサポートされていません。

同じaccessKeyが同じ出力ページにいくつも出現する場合、レンダリング・ユーザー・エージェントはそのキーでアクセスできる各要素を循環します。

このaccessKeyは、ニーモニックと呼ばれることもあります。

accessKeyは、ブラウザ固有およびプラットフォーム固有の修飾子キーによってトリガーされます。ブラウザ固有の意味もあります。たとえば、Internet Explorer 7.0で[Alt]+<accessKey>を押すと、フォーカスが設定されます。一部のオペレーティング・システムのFirefox 2.0では、[Alt]+[Shift]+<accessKey>を押します。他のオペレーティング・システムのFirefox 2.0では、[Control]+<accessKey>を押します。ブラウザによるaccessKeyの処理方法については、ブラウザのドキュメントを参照してください。

okVisible boolean あり 「OK」ボタンを可視可能にするかどうかを指定する値。タイプ属性の値がokCancelと同じでないとき、これは無視されます。
partialTriggers String[] あり 部分更新をトリガーするコンポーネントのID。このコンポーネントは、トリガー・コンポーネント上でリスニングします。トリガー・コンポーネントの1つがなんらかの更新を発生させるイベントを受信した場合、このコンポーネントも更新されることをリクエストします。識別子はソース・コンポーネント(このコンポーネント)に対して相対的であり、NamingContainerで構成されている必要があります。コンポーネントがすでにネーミング・コンテナ内にある場合、単一のコロンを使用するとページのルートから検索を開始でき、複数のコロンを使用するとNamingContainerを上方向に移動できます。たとえば、::を前に置くと、コンポーネントのネーミング・コンテナ(または、コンポーネントがネーミング・コンテナである場合にはそのコンポーネント自体)から出てそこから検索を開始します。:::を前に置くと、2つのネーミング・コンテナ(コンポーネントがネーミング・コンテナである場合にはそのコンポーネント自体も含まれます)から出てそこから検索を開始します。
rendered boolean あり コンポーネントがレンダリングされるかどうか。falseに設定した場合、このコンポーネントについて出力は配信されません(コンポーネントはどのような方法でもレンダリングされず、クライアントで表示できません)。
shortDesc String あり コンポーネントの短い説明。このテキストは、通常、ツールチップ・ヘルプ・テキストを表示するためにユーザー・エージェントによって使用されます。この場合、ツールチップの動作はユーザー・エージェントによって制御されます。たとえば、Firefox 2では長いツールチップは切り捨てられます。フォーム・コンポーネントの場合、shortDescはノート・ウィンドウに表示されます。
styleClass String あり このコンポーネントに対して使用するCSSスタイル・クラス。スタイル・クラスは、jspxページまたはスキニングCSSファイルなどで定義できます。または、AFInstructionTextのようなパブリック・スタイル・クラスの1つを使用できます。
title String あり ウィンドウのタイトル。
titleIconSource String あり タイトル・アイコン・ソースの場所を示すURI。タイトル・アイコンは通常、ウィンドウの左上隅に表示されます。
type String あり 有効な値: none、ok、cancel、yesNo、okCancel、yesNoCancel

ダイアログのボタン。たとえばyesNoCancelの値は、ダイアログに「はい」、「いいえ」および「取消」ボタンが追加されることを意味します。
visible boolean あり コンポーネントの可視性。falseの場合、コンポーネントはクライアント上で非表示となります。renderedとは異なり、これはサーバーでのライフサイクルには影響を与えません(コンポーネントに実行済バインディングがある、など)。コンポーネントの可視性は、クライアント上で切り替えるか、PPRを使用して切り替えることができます。renderedがfalseの場合、コンポーネントはどのような方法でもレンダリングされず、クライアントで表示できません。ほとんどの場合、visibleプロパティのかわりにrenderedプロパティを使用します。
次のレンダーキットではサポートされていません。 org.apache.myfaces.trinidad.core