ADFメソッド起動用のメソッド・パラメータの指定

データ・コントロール・パレットでメソッドの戻り値を操作する場合、そのメソッドが動作する際に、ADFイテレータ・バインディングは活用されません。通常、メソッドの戻り値を自分のドキュメントまたはデータ・ページにダウンロードできます。その結果、メソッドの実行は、ADFライフサイクルにより(イテレータ・バインディングなしで)暗黙的に処理されます。しかし、メソッドがパラメータ値を使用する場合、メソッドを起動する前に事前のステップを実行して、パラメータ値をメソッドにバインドする必要があります。次の各手順はいくつかの選択肢について説明しますが、そのうち最初のものが推奨されています。

ページ・フローを使用して、実行の前にメソッドの作成をするには、次のようにします。

  1. ページ・フロー・ダイアグラムを開き、データ・アクション(DA1)とデータ・ページ(DP1)を挿入して、それら2つの間でフォワード遷移を描きます。

    Page flow displays seperate data action and data page.

  2. データ・コントロール・パレットを使用し、準備対象のパラメータを保持しているメソッドの戻り値ノードをデータ・アクションにドロップします。

  3. データ・ページ(DP1)用のWebページを作成し、メソッドの戻り値から得られたデータをレンダリングします。

  4. ページ・フローに戻り、完成したページ・フロー・ダイアグラムを表示します

    Data page is complete.

  5. ページ・フローの「ソース」タブをクリックし、データ・アクション(DA1)のmodelReferenceプロパティを見つけ、結果をレンダリングするために使用されるページのUIモデル(DP1UIModel)に一致しなくなるよう、その値を変更します。次のようになります。

    
      <action path="/DA1" className="oracle.adf.controller.struts.actions.DataActionMapping"
                            type="oracle.adf.controller.struts.actions.DataAction" name="DataForm">
              <set-property property="modelReference" value="DA1UIModel"/>
              <forward name="success" path="/DP1.do"/>
         </action>        

    このステップを使用すると、メソッド・イテレータを使用せずにパラメータ・バインディングが発生するようになります。

前述の手順を使用した場合、メソッドが起動される前に、ページ・フローによりパラメータがメソッドにバインドされるようになります。しかし、この目的でデータ・アクションとデータ・ページを使用することを望まない場合、かわりにデータ・アクションまたはデータ・ページでprepareModel()メソッドをオーバーライドできます。結果は同じです。prepareModel()メソッドのコールによって、メソッドの呼出しが実行される前にメソッドのパラメータがバインドされます。

データ・ページまたはデータ・アクションをprepareModel()のサブクラス化するには、次のようにします。

  1. サブクラスを作成するには、ページ・フロー・ダイアグラムでデータ・ページまたはデータ・アクションを右クリックし、「コードに移動」を選択します。

  2. ダイアログの「拡張対象」フィールドに、スーパークラスoracle.adf.controller.struts.actions.DataActionまたはoracle.adf.controller.struts.actions.DataForwardActionが指定されています。デフォルト値のままで「OK」をクリックします。

    設計時、クラス・ファイルがプロジェクトに追加され、Javaコード・エディタで開かれます。

  3. ツールバーで、「ツール」->「メソッドのオーバーライド」を選択します。「メソッドのオーバーライド」ダイアログが開きます。

  4. 「メソッドのオーバーライド」ダイアログで、「prepareModel(DataActionContext):void」を選択します。

  5. Javaコード・エディタでprepareModel()メソッドを実装し、サブクラスを保存します。

    
    protected void prepareModel(DataActionContext actionContext) throws Exception
      {
          Long  rowCount = new Long(20);
    
          Integer rangeSize = new Integer(3);
          BindingContext p0 = actionContext.getBindingContext();
          if (p0.containsKey("rangeSize"))
          p0.remove("rangeSize");
    
          p0.put("rangeSize", rangeSize);
          if (p0.containsKey("rowCount"))
            p0.remove("rowCount");
    
          p0.put("rowCount", rowCount);
          super.prepareModel(actionContext);
      }        

データ・コントロール・パレットを使用したビジネス・サービス・メソッドの結果の挿入

データ・コントロール・パレットを使用したビジネス・サービス・アクションの挿入
アクション・バインディングのメソッド・パラメータの指定

 

Copyright © 1997, 2004, Oracle. All rights reserved.