データ・コントロール・パレットでメソッドの戻り値を操作する場合、そのメソッドが動作する際に、ADFイテレータ・バインディングは活用されません。通常、メソッドの戻り値を自分のドキュメントまたはデータ・ページにダウンロードできます。その結果、メソッドの実行は、ADFライフサイクルにより(イテレータ・バインディングなしで)暗黙的に処理されます。しかし、メソッドがパラメータ値を使用する場合、メソッドを起動する前に事前のステップを実行して、パラメータ値をメソッドにバインドする必要があります。次の各手順はいくつかの選択肢について説明しますが、そのうち最初のものが推奨されています。
ページ・フローを使用して、実行の前にメソッドの作成をするには、次のようにします。
ページ・フロー・ダイアグラムを開き、データ・アクション(DA1)とデータ・ページ(DP1)を挿入して、それら2つの間でフォワード遷移を描きます。
データ・コントロール・パレットを使用し、準備対象のパラメータを保持しているメソッドの戻り値ノードをデータ・アクションにドロップします。
ページ・フローに戻り、完成したページ・フロー・ダイアグラムを表示します。
ページ・フローの「ソース」タブをクリックし、データ・アクション(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>
このステップを使用すると、メソッド・イテレータを使用せずにパラメータ・バインディングが発生するようになります。
前述の手順を使用した場合、メソッドが起動される前に、ページ・フローによりパラメータがメソッドにバインドされるようになります。しかし、この目的でデータ・アクションとデータ・ページを使用することを望まない場合、かわりにページに対するADFライフサイクルのprepareModel()
メソッドをオーバーライドできます。結果は同じです。prepareModel()
メソッドのコールによって、メソッドの呼出しが実行される前にメソッドのパラメータがバインドされます。
ページのprepareModel()フェーズをオーバーライドする手順は、次のとおりです。
ページのPageControllerのサブクラスを作成するには、ページ・フロー・ダイアグラムでデータ・ページまたはデータ・アクションを右クリックして「コードに移動」を選択します。
ダイアログの「拡張対象」フィールドに、スーパークラスoracle.adf.controller.v2.lifecycle.PageController
が指定されています。デフォルト値のままで「OK」をクリックします。
設計時、クラス・ファイルがプロジェクトに追加され、Javaソース・エディタで開かれます。
「ソース」→「メソッドのオーバーライド」を選択して「メソッドのオーバーライド」ダイアログを開きます。
「メソッドのオーバーライド」ダイアログで、prepareModel(oracle.adf.controller.v2.context.LifecycleContext):voidを選択します。
Javaソース・エディタでprepareModel()
メソッドを実装し、サブクラスを保存します。
public void prepareModel(LifecycleContext context) throws Exception
{
Long rowCount = new Long(20);
Integer rangeSize = new Integer(3);
BindingContext p0 = context.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(context);
}
データ・コントロール・パレットを使用したビジネス・サービス・メソッドの結果の挿入
データ・コントロール・パレットを使用したビジネス・サービス・アクションの挿入
アクション・バインディングのメソッド・パラメータの指定
Copyright © 1997, 2006, Oracle. All rights reserved.