ヘッダーをスキップ
Oracle® Application Expressアプリケーション・ビルダー・ユーザーズ・ガイド
リリース4.2 for Oracle Database 12c
B71338-03
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

17.9 動的アクションの実装

このセクションでは、動的アクションの概要と、動的アクションの作成および変更方法について説明します。

内容は次のとおりです。

17.9.1 動的アクションの理解

動的アクションは、JavaScriptを必要としないで複雑なクライアント側の動作を宣言的に定義する方法を提供します。動的アクションの作成ウィザードを使用して、定義された条件セットが発生したときに実行されるアクションを指定します。また、アクションの影響を受ける要素や、影響を受ける時期と影響も指定できます。

動的アクションを使用するとき、ページに追加する動的アクションが多くなるほど全体のページ・サイズが大きくなることに注意する必要があります。これは、動的アクション・フレームワークでは、定義された各動的アクションについてクライアントへの追加コードを生成し、そのコードはクライアント内のフレームワークによってダウンロードおよび実行される必要があるためです。問題をデバッグする方法についての情報は、「動的アクションのデバッグ」を参照してください。

動的アクションを実装するプロセスには、次の手順があります。

  1. ページ上で、アイテム、ボタン、リージョン、DOMオブジェクトまたはjQueryセレクタを編集または作成します。このコンポーネントは、起動される時期を定義する際、動的アクション内で参照されます。

  2. アクションを起動するアプリケーション・ページから動的アクションを作成します。

  3. 動的アクションをテストするためにアプリケーションを実行します。

動的アクションの実装例については、次の場所にあるLearning Libraryに移動し、「All Content」タブをクリックして、Application Express(APEX)製品OBEの検索基準を入力します。

http://www.oracle.com/technetwork/tutorials/index.html

17.9.2 動的アクションの作成

動的アクションの作成には、アクションが発生する時期(オプション条件を指定する)、実行されるアクションおよびアクションの影響を受ける要素を指定する手順が含まれます。

  1. 該当するページ定義にナビゲートします。「ページ定義へのアクセス」を参照してください。

  2. 「ページ・レンダリング」で、「動的アクション」までスクロールして、「作成」をクリックします。

    「動的アクション」ウィザードが表示されます。

  3. 「指定」で、次の内容を入力し、「次へ」をクリックします。

    • 名前: 動的アクションの名前を入力します。

    • 順序: このコンポーネントの順序を入力します。これによって実行の順序が決まります。

  4. 「時期」では、アクションを実行する時期を指定して「次へ」をクリックします。使用可能なオプションは次のとおりです。

    1. イベント: 動的アクションは、ページで発生するイベントに基づいて起動するように定義できます。使用できるイベントには、ブラウザ・イベント、フレームワーク・イベント、コンポーネント・イベントおよびカスタム・イベントの4種類のカテゴリがあります。サポートされるすべてのイベントの詳細は次のとおりです(JavaScriptの内部イベント名をカッコで示します)。

      ブラウザ・イベント


      注意:

      ページの現在のユーザー・インタフェース・タイプに応じて、表示されるイベントは異なります。別のタイプに対応するイベントを選択する場合、現在のタイプに対応しないものも含むすべてのイベントを表示する「非サポートの表示」を選択できます。

      • 変更(change): コントロールが入力フォーカスを失い、フォーカスの取得後に値が変更された場合に起動します。サポートされているユーザー・インタフェース・タイプ: デスクトップおよびjQuery Mobileスマートフォン。

      • クリック(click): ポインティング・デバイスのボタンがトリガー要素上でクリックされたときに起動します。サポートされているユーザー・インタフェース・タイプ: デスクトップおよびjQuery Mobileスマートフォン。

      • ダブルクリック(dblclick): ポインティング・デバイスのボタンがトリガー要素上でダブルクリックされたときに起動します。サポートされているユーザー・インタフェース・タイプ: デスクトップ。

      • フォーカスを取得(focusing): ポインティング・デバイスまたは要素へのタブによる移動によってトリガー要素がフォーカスを受け取ったときに起動します。サポートされているユーザー・インタフェース・タイプ: デスクトップおよびjQuery Mobileスマートフォン。

      • キー・ダウン(keydown): キーボード上のキーが押されたときに起動します。矢印キーなどの特殊なキーストロークを(キーが押された後に)取得するときにこのイベントを使用します。サポートされているユーザー・インタフェース・タイプ: デスクトップおよびjQuery Mobileスマートフォン。

      • キー・プレス(keypress): キーボード上のキーが押され、結果としてテキストが入力されたときに起動します。実際のテキスト入力を取得するときにこのイベントを使用します。サポートされているユーザー・インタフェース・タイプ: デスクトップおよびjQuery Mobileスマートフォン。

      • キー・リリース(keyup): キーボード上のキーが解放されたときに起動します。矢印キーなどの特殊なキーストロークを(キーが解放された後に)取得するときにこのイベントを使用します。サポートされているユーザー・インタフェース・タイプ: デスクトップおよびjQuery Mobileスマートフォン。

      • フォーカスを失う(focusout): ポインティング・デバイスまたは要素からのタブによる移動によってトリガー要素がフォーカスを失ったときに起動します。サポートされているユーザー・インタフェース・タイプ: デスクトップおよびjQuery Mobileスマートフォン。

      • マウス・ボタン・プレス(mousedown): ポインティング・デバイスのボタンがトリガー要素上で押されたときに起動します。サポートされているユーザー・インタフェース・タイプ: デスクトップ。

      • マウス・ボタン・リリース(mouseup): ポインティング・デバイスのボタンがトリガー要素上で解放されたときに起動します。サポートされているユーザー・インタフェース・タイプ: デスクトップ。

      • マウス・エンター(mouseenter): ポインティング・デバイスがトリガー要素内に移動すると起動します。サポートされているユーザー・インタフェース・タイプ: デスクトップ。

      • マウス・リーブ(mouseleave): ポインティング・デバイスがトリガー要素外に移動すると起動します。サポートされているユーザー・インタフェース・タイプ: デスクトップ。

      • マウス・ムーブ(mousemove): ポインティング・デバイスがトリガー要素上にあるとき、移動すると起動します。サポートされているユーザー・インタフェース・タイプ: デスクトップ。

      • 方向の変更(orientationchange): デバイスの方向を(水平方向または垂直方向に)変更する際に起動します。'this.browserEvent' JavaScriptオブジェクトには、'portrait'または'landscape'のいずれかと同等な'orientation'プロパティが含まれています。サポートされるユーザー・インタフェース・タイプ: jQuery Mobileスマートフォン。

      • ページのロード(「デスクトップ」ユーザー・インタフェースではreadyを使用し、「jQuery Mobileスマートフォン」ユーザー・インタフェースではpageintを使用): ページのロード時に起動します。サポートされているユーザー・インタフェース・タイプ: デスクトップおよびjQuery Mobileスマートフォン。

      • ページのアンロード(unload): ページがアンロードされるときに起動します。サポートされているユーザー・インタフェース・タイプ: デスクトップおよびjQuery Mobileスマートフォン。

      • サイズ変更(resize): ブラウザ・ウィンドウがサイズ変更されるときに起動します。サポートされているユーザー・インタフェース・タイプ: デスクトップ。

      • リソースのロード(load): トリガー要素がウィンドウ要素の場合(「時期」属性の「DOMオブジェクト」値に「window」を使用)、ブラウザでドキュメント内のすべてのコンテンツ(ウィンドウ、フレーム、オブジェクトおよびイメージを含む)のロードが完了したときにイベントが起動します。他の要素の場合、ターゲット要素とそのすべてのコンテンツのロードが完了したときに起動します。サポートされているユーザー・インタフェース・タイプ: デスクトップおよびjQuery Mobileスマートフォン。

      • スクロール(scroll): スクロール可能なトリガー要素がスクロールされるときに起動します。これは、ブラウザ・ウィンドウ(「時期」属性の「DOMオブジェクト」値に「window」を使用)、スクロール可能なフレーム、またはCSSプロパティの「overflow」が「scroll」(要素の明示的な高さがコンテンツの高さよりも低いときは「auto」)に設定されている要素が考えられます。サポートされているユーザー・インタフェース・タイプ: デスクトップおよびjQuery Mobileスマートフォン。

      • スクロール・スタート(scrollstart): スクロールの開始時に起動します。サポートされるユーザー・インタフェース・タイプ: jQuery Mobileスマートフォン。

      • スクロール・ストップ(scrollstop): スクロールの終了時に起動します。サポートされるユーザー・インタフェース・タイプ: jQuery Mobileスマートフォン。

      • 選択(select): ユーザーがテキスト・フィールドの一部のテキストを選択するときに起動します。サポートされているユーザー・インタフェース・タイプ: デスクトップおよびjQuery Mobileスマートフォン。

      • スワイプ(swipe): 1秒以内に水平方向に30px以上(および垂直方向に75px未満)ドラッグされた場合に起動します。サポートされるユーザー・インタフェース・タイプ: jQuery Mobileスマートフォン。

      • 左スワイプ(swipeleft): 左方向へ移動するスワイプ・イベントが発生した場合に起動します。サポートされるユーザー・インタフェース・タイプ: jQuery Mobileスマートフォン。

      • 右スワイプ(swiperight): 右方向へ移動するスワイプ・イベントが発生した場合に起動します。サポートされるユーザー・インタフェース・タイプ: jQuery Mobileスマートフォン。

      • タップ(tap): クイック・タッチ・イベント後に起動します。サポートされるユーザー・インタフェース・タイプ: jQuery Mobileスマートフォン。

      • タップ・アンド・ホールド(taphold): ホールド・タッチ・イベント(1秒近くのホールド)後に起動します。サポートされるユーザー・インタフェース・タイプ: jQuery Mobileスマートフォン。

      • タッチ・キャンセル(vmousecancel): タッチまたはマウスキャンセル・イベントを処理する正規化されたイベント。サポートされるユーザー・インタフェース・タイプ: jQuery Mobileスマートフォン。

      • タッチ・エンド(vmouseup): タッチ・エンドまたはマウス・アップ・イベントを処理する正規化されたイベント。サポートされるユーザー・インタフェース・タイプ: jQuery Mobileスマートフォン。

      • タッチ・ムーブ(vmousemove): タッチ・ムーブまたはマウス・ムーブ・イベントを処理する正規化されたイベント。サポートされるユーザー・インタフェース・タイプ: jQuery Mobileスマートフォン。

      • タッチ・スタート(vmousedown): タッチ・スタートまたはマウス・ダウン・イベントを処理する正規化されたイベント。サポートされるユーザー・インタフェース・タイプ: jQuery Mobileスマートフォン。

      • 仮想クリック(vclick): タッチ・エンドまたはマウス・クリック・イベントを処理する正規化されたイベント。タッチ・デバイスでは、このイベントは「タッチ・エンド」後に送信されます。サポートされるユーザー・インタフェース・タイプ: jQuery Mobileスマートフォン。

      フレームワーク・イベント

      • リフレッシュ後(apexafterrefresh): トリガー要素がリフレッシュされた後に起動します。このイベントは、部分ページ・リフレッシュを実行し、このイベントを起動するトリガー要素にのみ有効です。これをサポートするネイティブ・コンポーネントは、「対話モード・レポート」、「クラシック・レポート」、「チャート」、「リスト・ビュー」およびカスケードLOVサポートが存在するすべてのアイテム・タイプです。プラグインでもこのイベントがサポートされる場合があります。サポートされているユーザー・インタフェース・タイプ: デスクトップおよびjQuery Mobileスマートフォン。

      • ページの送信前(apexbeforepagesubmit): ページが送信される前に起動します。サポートされているユーザー・インタフェース・タイプ: デスクトップおよびjQuery Mobileスマートフォン。

      • リフレッシュ前(apexbeforerefresh): トリガー要素がリフレッシュされる前に起動します。このイベントは、部分ページ・リフレッシュを実行し、このイベントを起動するトリガー要素にのみ有効です。これをサポートするネイティブ・コンポーネントは、「対話モード・レポート」、「クラシック・レポート」、「チャート」、「リスト・ビュー」およびカスケードLOVサポートが存在するすべてのアイテム・タイプです。プラグインでもこのイベントがサポートされる場合があります。サポートされているユーザー・インタフェース・タイプ: デスクトップおよびjQuery Mobileスマートフォン。

      コンポーネント・イベント

      これらのイベントは、カスタム・イベントをトリガーする、アプリケーションで使用可能なコンポーネント(アイテム、リージョンまたは動的アクションのいずれか)が存在する場合にのみ使用できます。これらのイベントは、イベント名[コンポーネント名]の書式で表示され、たとえばShuttleネイティブ・アイテム・タイプによってトリガーされるChange Orderイベントは、Change Order [Shuttle]と表示されます。コンポーネントのイベントは、Oracle Application Expressに付属のネイティブ・コンポーネントまたはアプリケーションにインストールしたプラグイン・コンポーネントのいずれかからトリガーされます。

      • ネイティブ・コンポーネントによってトリガーされるイベント

        順序の変更[シャトル](shuttlechangeorder): 右側の選択リストの値の順序が変更された(Move Top、Move Up、Move DownまたはMove Bottomを使用)ときに起動します。Oracle Application Expressでは現在、ネイティブ・コンポーネントによってトリガーされるイベントは他にありません。サポートされているユーザー・インタフェース・タイプ: デスクトップおよびjQuery Mobileスマートフォン。

      • プラグイン・コンポーネントによってトリガーされるイベント

        これらは現在のアプリケーションに追加されると使用可能になり、イベント名[コンポーネント名]の書式になります。プラグインが発生させるイベントに関連したヘルプについては、「共有コンポーネント」、「プラグイン」、「プラグイン名」、「ヘルプ・テキスト」にナビゲートして、プラグイン構成ページのヘルプ・テキストを参照してください(プラグイン作成者がここにドキュメントを格納している場合があります)。サポートされるユーザー・インタフェース・タイプ: プラグインの「ユーザー・インタフェース」→「サポート対象」設定によって決定されます。

      • カスタム・イベント:

        「カスタム」を選択すると、カスタム・イベントを定義できる追加のフィールドが表示されます。これは、ネイティブまたはプラグインによって提供されるイベントが十分でない場合に役立ちます。

    2. 選択タイプ: 動的アクションをトリガーするページ要素のタイプを選択します。ページ要素の名前を指定するための対応する名前フィールドが表示されます。


      注意:

      選択されたイベントでページ要素の定義がサポートされている場合にのみ、使用できます。「ページのロード」、「ページのアンロード」、「サイズ変更」、「ページの送信前」、「方向の変更」のイベントを選択すると、このフィールドは非表示になります。他のすべてのイベント・タイプでは、このフィールドが表示されます。

    3. アイテム、ボタン、リージョン、DOMオブジェクトまたはjQueryセレクタ: ページ要素の名前を次のように選択します。

      • アイテム: 動的アクションをトリガーする1つ以上のページ・アイテム名を入力または選択します。複数のアイテムを指定する場合は、ページ・アイテムをカンマで区切ります。

      • ボタン: 動的アクションをトリガーするボタンを選択します。ボタンがテンプレート・ボタンの場合、選択されたボタンは、#BUTTON_ID#に設定されたID属性を含むボタン・テンプレートを使用する必要があります。動的アクション・フレームワークは、ボタンを参照するためにこのID値を使用します。

      • リージョン: 動的アクションをトリガーするリージョン名を選択します。選択されたリージョンは、ID属性を#REGION_STATIC_ID#に設定したコンテナ要素を含むリージョン・テンプレートを使用する必要があります。動的アクション・フレームワークは、リージョンを参照するためにこのID値を使用します。

        リージョンは、これ自体でイベントを発生させることも(「リフレッシュ前」や「リフレッシュ後」イベントなど)、リージョン内のアイテムまたは他の要素で発生するイベントを捕捉するコンテナになることもできます。このことがサポートされているイベントのサブセットは、変更(change)、クリック(click)、ダブルクリック(dblclick)、フォーカスの取得(focus)、キー・ダウン(keydown)、キー・プレス、キー・リリース(keyup)、フォーカスを失う(blur)、マウス・ボタン・プレス(mousedown)、マウス・ボタン・リリース(mouseup)、マウス・ムーブ(mousemove)のみです。

      • DOMオブジェクト: 動的アクションをトリガーするDocument Object Model(DOM)オブジェクト定数(ドキュメントまたはウィンドウなど)またはDOMオブジェクトのIDを入力します。

      • jQueryセレクタ: 動的アクションをトリガーする1つ以上のページ要素を戻すjQueryセレクタ構文を入力します。

    4. 条件: 条件を指定するには、「条件」リストから選択します。条件タイプによっては、条件をテストする値を入力する必要がある場合があります。条件が指定されない場合、Trueアクションのみが起動されます。条件を指定する場合、条件を満たすと、Trueアクションが起動され、条件を満たさない場合は、Falseアクションが起動されます。

  5. 以前指定されたイベントが発生して条件が満たされた場合に実行されるアクションを指定し、「次へ」をクリックします。

    • 「Trueアクション」では、選択したアクションによって、追加のオプションが表示されます。これらのオプションを使用して、アクションを実行するために必要な追加の設定と値を指定します。

      コンポーネント

      • クリア: 影響を受ける要素をクリアします。

      • 無効化: 影響を受ける要素を無効化します。影響を受ける要素を無効化することによって、ページ・アイテムは編集不可能になり、ページが送信されるときにアイテムの値を保持しません。

      • 有効化: 影響を受ける要素を有効化します。

      • 非表示: 影響を受ける要素を非表示にします。「同じ行のすべてのページ・アイテムを非表示」にするオプションもあります。

      • リフレッシュ: 影響を受ける要素のリフレッシュをトリガーします。すべての要素でリフレッシュがサポートされるわけではありません。リフレッシュは、対話モード・レポート、クラシック・レポート、チャート、カスケードLOVサポートが存在するすべてのアイテム・タイプに使用できます。プラグインでもこのアクションがサポートされる場合があります。

      • フォーカスの設定: 影響を受ける要素にフォーカスを設定します。影響を受ける要素が複数ある場合、それらのうち最初の要素がデフォルトになります。これは、特に、ユーザーを適切なアイテムに直接移動させるために、「表示」および「有効化」アクションと組み合せて使用すると便利です。

      • 値の設定: 影響を受ける要素の値を設定します。これは、「静的割当て」、「JavaScript式」、「SQL文」、「PL/SQL式」、「PL/SQLファンクション本体」のタイプの設定をサポートします。「SQL文」のタイプの設定は、問合せで1から100の間の列を選択することによる、1から100の間のページ・アイテム値の設定をサポートします。それ以外のすべてのタイプの設定では、1つのページ・アイテムの設定しかサポートしません。ページで複数の値を設定する他の方法については、「PL/SQLコードの実行」アクションを参照してください。

      • 表示: 影響を受ける要素を表示します。「同じ行のすべてのページ・アイテムを表示」のオプションもあります。

      実行

      • JavaScriptコードの実行: 動的アクション・フレームワーク内で使用する、ページ固有のカスタムJavaScriptコードを定義またはコールできます。1つのページについてのみ固有のJavaScriptコードを定義する場合、新しいページ・レベル属性「ファンクションおよびグローバル変数の宣言」を使用してこれを定義することもできます。ここで定義されるファンクションと変数は、後でこのアクションから参照できます。

      • PL/SQLコードの実行: サーバー上でPL/SQLコードを実行します。実行中にエラーが発生した場合、ユーザーにアラートが表示されます。セッション・ステートの値に基づいて、サーバーへのコールが返されたときページに設定されるページ・アイテムを指定するには、「返されるページ・アイテム」を定義します。「返されるページ・アイテム」オプションが使用された場合に、「返されるページ・アイテム」に対して変更ベースの動的アクションがそれ以降起動されないようにするには、「変更イベントの禁止」「はい」に設定します。

      通知

      • アラート: アラートを表示します。

      • 確認: 確認ダイアログを表示します。ユーザーが「取消」を選択した場合、続行アクションは実行されず、現在のイベントは取り消されます。

      スタイル

      • クラスの追加: 影響を受ける要素に1つ以上のCSSクラスを追加します。

      • クラスの削除: 影響を受ける要素から1つ以上またはすべてのクラスを削除します。

      • スタイルの設定: スタイル、CSS、プロパティを影響を受ける要素に設定します。

      その他

      • イベントの取消: ある特定の条件に基づき、後続の動的アクションまたはイベントの起動を取り消します。このことは、次の状況で役立つ場合があります。

        同じイベント(「クリック」など)に基づく複数の動的アクションが1つのページ上にあり、かつ、それらの動的アクションがそのページ上の同じ要素を参照する場合、「イベントの取消」アクションを使用して、「WHEN条件」に基づく条件によって、後続の動的アクションが起動されないようにできます。

        1つの動的アクションに複数のtrueアクションがある場合は、「イベントの取消」を使用して、後続のアクションの処理を停止できます。動的アクションのアクションを条件付きで起動するように定義できないため、現在は値が制限されています。したがって、このイベントでは、常に、後続のアクションの処理を防止するのみです。アクションを防止することは、デバッグに役立つ場合があります。

        動的アクションの「ページの送信前」イベントと組み合せて使用する場合は、ページの送信を取り消すために使用されます。たとえば、「ページの送信前」イベントで起動される動的アクションを定義するとします。「条件」で、「JavaScript式」を定義し、「値」に$v('P2_ENAME') == 'DO NOT SUBMIT'のような式を入力します。その後、「イベントの取消」アクションを使用するTrueアクションを定義すると、ページはENAMEフィールドがDO NOT SUBMITに等しいときに送信されません。

      • ページの送信: ページを送信します。またオプションで、ページの送信時にカレント・ページを無効化して、プロセス・スタイルのGIFを表示できます。

      プラグイン

      • my_plugin_action[Plug-in]: アプリケーション構成によっては、ここで追加のプラグイン動的アクションを使用できる場合もあります。これらはmy_plugin_action [Plug-in]と表示されます。プラグイン動的アクションはアプリケーションの共有コンポーネント内にインストールされます。プラグイン開発者はアクションに対応する適切なカテゴリを割り当てる必要があります(コンポーネント、実行など)。

    • ページのロード時に実行: ページをロードするときにこのアクションもトリガーするには、このオプションを選択します。このオプションがデフォルトで選択されているかどうかは、選択されたアクションのタイプによって異なります。

    • 反対のFALSEアクションの生成: 反対のFALSEアクションも生成するには、このオプションを選択します。反対のアクションとして扱われるものには、「表示/非表示」、「有効/無効」および「クラスの追加/クラスの削除」があります。このオプションは、上述のアクションのいずれかが選択された場合および条件が指定された場合にのみ表示されます。

  6. 「影響を受ける要素」(影響を受ける要素がサポートされているアクションでのみ使用可能)で、この動的アクションによる影響を受ける要素と要素が受ける影響を指定し、「次へ」をクリックします。

    動的アクションを作成する最終ステップは、影響を受ける要素の選択が、選択したアクションによってサポートされているかどうかによって異なります。「ページの送信」のような一部のアクションでは、影響を受ける要素を選択する必要はありません。「表示」などの他のアクションでは、影響を受ける要素を選択する必要があります。影響を受ける要素の選択が、選択したアクションによってサポートされていない場合、最後のページは動的アクションの詳細を確認できる、確認ページとなります。影響を受ける要素の選択が、選択したアクションによってサポートされている場合、このページのオプションは次のとおりです。

    • 選択タイプ: 動的アクションによる影響を受けるページ要素のタイプを選択します。選択されたタイプによって、追加のオプションが表示されます。これらのオプションを使用して、要素が受ける影響を指定するために必要な追加の設定と値を指定します。

    • アイテム、ボタン、リージョン、DOMオブジェクトまたはjQueryセレクタ: ページ要素の名前を次のように選択します。

      • アイテム: 動的アクションによる影響を受けるアイテム名を選択します。

      • ボタン: 動的アクションによって影響を受けるボタンを選択します。ボタンがテンプレート・ボタンの場合、選択されたボタンは、#BUTTON_ID#に設定されたID属性を含むボタン・テンプレートを使用する必要があります。動的アクション・フレームワークは、ボタンを参照するためにこのID値を使用します。

      • リージョン: 動的アクションによる影響を受けるリージョン名を入力または選択します。選択されたリージョンは、ID属性を#REGION_STATIC_ID#に設定したコンテナ要素を含むリージョン・テンプレートを使用する必要があります。動的アクション・フレームワークは、リージョンを参照するためにこのID値を使用します。

      • DOMオブジェクト: 動的アクションの影響を受けるDocument Object Model(DOM)オブジェクト定数(ドキュメントまたはウィンドウなど)またはDOMオブジェクトのIDを入力します。

      • jQueryセレクタ: 動的アクションの影響を受ける1つ以上のページ要素を戻すjQueryセレクタ構文を入力します。

      • トリガー要素: 動的アクションの「時期」で定義したページ要素へのアクセスを提供します。

      • イベント・ソース: イベントが発生したページ要素(トリガー要素とは異なる場合があります)へのアクセスを提供します。たとえば、WHEN要素が、サブ要素(そのリージョンのページ・アイテムなど)によって発生されたイベントを処理するよう定義されている(リージョンなどの)コンテナ要素である場合、「イベント・ソース」を使用すると、そのイベントをトリガーしたサブ要素に簡単に対応できます。

  7. 「動的アクションの作成」をクリックします。

17.9.3 動的アクションの編集

動的アクションを作成した後、作成プロセス中に定義した属性を変更したり、プロセス中に指定できなかった属性を指定したり(「認可スキーム」の指定など)、追加のtrueアクションを追加できます。

動的アクションを編集するには、次のステップを実行します。

  1. 該当するページ定義にナビゲートします。「ページ定義へのアクセス」を参照してください。

  2. 「ページ・レンダリング」で、「動的アクション」までスクロールして、変更する動的アクションをクリックします。

    動的アクションの編集ページが表示されます。

  3. 変更を行い、「適用」をクリックします。

17.9.4 Trueアクションの追加

動的アクションには、Trueアクションが起動する時期を制御するために指定できる条件が含まれています。たとえば、従業員情報をマネージャに表示するアプリケーションについて考えます。従業員が上級一般職の場合は給与が表示され、それ以外の場合は時給が表示されます。

動的アクション作成ウィザードでは、1つのTrueアクションのみ指定できます。複数のアクションを追加するには、動的アクションを作成するための作成ウィザードを使用した後、Trueアクションを追加するようにアクションを編集する必要があります。

アクションを追加するには、次の手順を実行します。

  1. 該当するページ定義にナビゲートします。「ページ定義へのアクセス」を参照してください。

  2. 「ページ・レンダリング」で、「動的アクション」までスクロールして、変更する動的アクションをクリックします。

    動的アクションの編集ページが表示されます。

  3. 条件が満たされたとき、または条件が指定されなかったときに実行されるアクションを追加するには、「Trueアクション」までスクロールして、「Trueアクションの追加」をクリックします。

    アクションの作成/編集ページが表示されます。

  4. 「指定」で、次の項目を指定します。

    1. 順序: このコンポーネントの順序を入力します。これは、実行順序を示します。

    2. アクション: 条件がtrueのときにトリガーされるアクションを選択します。

  5. 「実行オプション」で、次の項目を指定します。

    1. ページのロード時に実行: ページをロードするときにもアクションをトリガーする場合に選択します。

    2. エラー時に実行停止: 現在のアクションの実行中にエラーが発生した場合、続行アクションを実行するかどうかを指定します。「PL/SQLコードの実行」など、選択されたアクションがこの属性を公開するように定義されている場合のみ使用可能です。

    3. 結果を待機: 現在のアクションの結果を待機してからアクションを実行するか(アクションが結果に依存しているかどうか)、または待機せずに実行するかを指定します。「PL/SQLコードの実行」など、選択されたアクションがこの属性を公開するように定義されている場合のみ使用可能です。

  6. 「影響を受ける要素」で、次の項目を指定します(選択されたアクションで、影響を受ける要素の定義がサポートされる場合にのみ使用可能)。


    注意:

    選択されたアクションのタイプによって、次のフィールドの一部またはすべてを選択できないことがあります。たとえば、「無効化」アクションでは、影響を受ける要素として「リージョン」を選択することがサポートされていません。

    1. 選択タイプ: 動的アクションによる影響を受けるページ要素のタイプを選択します。ページ要素の名前を指定するための対応する名前フィールドが表示されます。

    2. アイテム、ボタン、リージョン、DOMオブジェクトまたはjQueryセレクタ: ページ要素の名前を次のように選択します。

      • アイテム: 動的アクションによる影響を受けるアイテム名を入力または選択します。

      • ボタン: 動的アクションによって影響を受けるボタンを選択します。ボタンがテンプレート・ボタンの場合、選択されたボタンは、#BUTTON_ID#に設定されたID属性を含むボタン・テンプレートを使用する必要があります。動的アクション・フレームワークは、ボタンを参照するためにこのID値を使用します。

      • リージョン: 動的アクションによる影響を受けるリージョン名を入力または選択します。選択されたリージョンは、ID属性を#REGION_STATIC_ID#に設定したコンテナ要素を含むリージョン・テンプレートを使用する必要があります。動的アクション・フレームワークは、リージョンを参照するためにこのID値を使用します。

      • DOMオブジェクト: 動的アクションの影響を受けるDocument Object Model(DOM)オブジェクトまたはDOMオブジェクトのIDを入力します。

      • jQueryセレクタ: 動的アクションの影響を受ける1つ以上のページ要素を戻すjQueryセレクタ構文を入力します。

  7. 「コメント」に、開発者のコメントまたは注意を入力します。これらのコメントは、アプリケーションの実行中に表示されません。

  8. 「作成」をクリックします。

    動的アクションの編集ページが表示され、追加したアクションが「Trueアクション」の下に表示されます。

17.9.5 頻度と有効範囲の定義

動的アクションを作成した後、アクションの有効範囲を1回のみのトリガーとするか、現在のページの存続期間中とするか、トリガー要素が部分ページ・リフレッシュ(PPR)によって更新されるまでとするかを変更できます。

有効範囲を指定するには、次のステップを実行します。

  1. 該当するページ定義にナビゲートします。「ページ定義へのアクセス」を参照してください。

  2. 「ページ・レンダリング」で、「動的アクション」までスクロールして、変更する動的アクションをクリックします。

    動的アクションの編集ページが表示されます。

  3. 「詳細」までスクロールして、「イベント有効範囲」で次のいずれかを選択します。

    1. 静的(デフォルト): 現在のページの存続期間中、イベント・ハンドラをトリガー要素にバインドします。ただし、トリガー要素が部分ページ・リフレッシュ(PPR)を通じて更新された場合はバインドされなくなります。

    2. 動的: 現在のページの存続期間中、イベント・ハンドラをトリガー要素にバインドします(部分ページ・リフレッシュ(PPR)を通じて更新されたトリガー要素を含む)。「動的」を指定すると、追加のフィールド「静的コンテナ(jQueryセレクタ)」が表示されます。静的コンテナを指定すると、動的イベント有効範囲でのイベント処理のパフォーマンスの向上に役立ちます。これは、それ自体は再生成されないページの要素ですが、部分ページ・リフレッシュ(PPR)によって再生成されるトリガー要素を含みます。この要素参照は、jQueryセレクタとして定義する必要があります。たとえば、(PPRによって再作成される)対話モード・レポート・リージョンの行になんらかの処理を実行する動的アクションがある場合、レポートのリフレッシュ後も動的アクションが機能するようにするには、「イベント有効範囲」が「動的」である必要があります。また、静的コンテナの値を、リージョンの静的ID値を選択するjQueryセレクタに設定できます(例: '#my_region')。

    3. 1回: 1回のみのイベントについて、イベント・ハンドラをトリガー要素にバインドします。

  4. 「変更の適用」をクリックします。

17.9.6 動的アクションのデバッグ

Oracle Application Express内での動的アクションのデバッグは、他のデバッグと少し異なります。これは、動的アクション・フレームワーク内で実行される処理の多くが、サーバー側でなくクライアント側で実行されるためです。動的アクションをデバッグするには、ブラウザでJavaScriptコンソールがサポートされている場合、Oracle Application Expressがデバッグ情報をブラウザのJavaScriptコンソールに出力します(たとえば、FirebugがインストールされたFirefoxは、デバッグ情報を「Console」ペインに表示します)。デバッグ情報には、動的アクションの起動時、動的アクションの名前およびAction JavaScriptオブジェクトが記載されており、クライアントがアクションを実行するために必要なすべての情報(イベント名、時期の詳細、アクション、影響を受ける要素など)が含まれています。

動的アクションをデバッグするには、次のステップを実行します。

  1. 動的アクションが含まれているアプリケーションのデバッグが有効化されていることを確認します。「デバッグ・モードへのアクセス」を参照してください。

  2. 動的アクションが含まれているページを実行します。

  3. ブラウザのJavaScriptコンソールを開きます。

  4. 開発者ツールバーで、「デバッグ」をクリックします。

    ページがリフレッシュされます。ページのロード時に起動するように設定されている動的アクションがある場合は、コンソールに次のテキスト出力が表示されます。

    Dynamic Action Fired: [Dynamic action name] ({JavaScript Object containing all Dynamic Action information})

    デバッグ情報はデバッグ・モードで実行されている場合にのみ出力されるため、デバッグ・モードをオンのままにすることで、動的アクションが予期される時期に起動されるかどうかをさらにテストできます。たとえば、ある特定のアイテムの値が変更されるときに起動する動的アクションを定義した場合、そのアイテムの値を変更すると、動的アクションが起動したかどうかのデバッグ出力がコンソールに表示されます。