カスタム・メソッドを使用したビュー・オブジェクトでのバインド・パラメータの設定

このトピックでは、次の操作が可能なデータ・バインドされたStrutsアプリケーションのモデル・レイヤー、コントローラ・レイヤーおよびビュー・レイヤーの作成に必要な手順を説明します。

このトピックでは、次の項目について説明します。

概要

アプリケーションが完成したら、ページ・フロー・ダイアグラムから実行します。最初に次のような検索要求用のWebページが表示されます。

Search by salary and department form

検索結果のWebページは次のようになります。

Search results table

次の図に、このページ・フローを作成するためにモデル・レイヤー、コントローラ・レイヤーおよびビュー・レイヤーで実行する必要のある手順を簡単に示します。

Scenario steps in Model, View, and Controller layers

次に、このページ・フローを作成するためにモデル・レイヤー、コントローラ・レイヤーおよびビュー・レイヤーで実行する必要のある主要な手順を詳しく説明します。

モデル・レイヤー

コントローラ・レイヤー(設計時)

ビュー・レイヤー

コントローラ・レイヤー(実行時)

問合せのカスタマイズと関連するカスタム・メソッドの作成

カスタム・メソッドを作成してクライアントが使用できるようにするには、次のようにします。

  1. EmployeesViewに対するビュー・オブジェクト定義のカスタム問合せを指定します

    ビュー・オブジェクト・エディタの問合せペインに次のwhere句を追加します。

    Employees.SALARY > :1 and Employees.DEPARTMENT_ID = :2

    次のスクリーン・キャプチャを参照してください。

    Described in text

    このwhere句を追加すると、ビュー・オブジェクトを定義する問合せが変更されます。ここでバインド変数を設定するメソッドを定義する必要があります。

  2. アプリケーション・モジュールのJavaクラスにカスタム・メソッドを追加します。

    次のコードをアプリケーション・モジュールのクラス・ファイルに追加します。

    public void setBindVars(Double salary, Integer departmentId)
    {
     System.out.println("***In setBindVars*****");
     ViewObject vo = findViewObject("EmployeesView1");
     vo.setWhereClauseParam(0, salary);
     vo.setWhereClauseParam(1, departmentId);
     vo.executeQuery();
    }

    詳細は、「アプリケーション・モジュールの拡張」を参照してください。

  3. クライアントがメソッドを使用できるようにします。

    システム・ナビゲータまたはアプリケーション・ナビゲータでアプリケーション・モジュール定義を右クリックし、「編集」を選択します。「クライアント・インタフェース」ノードを選択します。次に、「使用可能」リストの「setBindVars()」を選択して、「選択済」リストに移動します。この手順を実行すると、データ・コントロール・パレットのメソッドが使用可能になります。

検索ページ機能の作成

このページ・フローに検索ページを作成するには、次の手順を実行する必要があります。

検索のためのページ・フォワードとデータ・アクションを作成するには、次のようにします。

  1. Strutsページ・フロー・ダイアグラムを開きます

  2. コンポーネント・パレットで、ページ・フォワード要素をクリックしてページ・フロー・ダイアグラムにドラッグします。ページ・フォワードに/searchRequestという名前を付けます。

    この手順を実行すると、次のアクション・マッピングがstruts-config.xmlファイルに作成されます。

    <action path="/searchRequest" forward="unknown"/>

    ページ・フォワード要素をページ・フローの最初のアクション・マッピングとして追加すると、<parameter>要素がunknownに設定された<action>要素が追加されます(値は、次の手順でページ・フォワードに関連するJSPページを作成する際に設定します)。

    Oracle ADFアクション・サブクラスを使用したアクション・マッピングの詳細は、「データ・バインドされたStrutsアプリケーションでのページ・フローについて」を参照してください。
  3. 「/searchRequest」アイコンをダブルクリックし、「ページの選択または作成」ダイアログ・ボックスで「OK」をクリックし、searchRequest.jspという名前のJSPページを作成します。このとき、「このページをすぐに編集」チェック・ボックスの選択を解除します。ページの編集は後から行います。

    searchRequest.jspファイルが作成され、前の手順で定義したアクションのforward属性の値が次のように設定されます。

    <action path="/searchRequest" forward="/searchRequest.jsp"/>

  4. コンポーネント・パレットで、データ・アクション要素をクリックしてページ・フロー・ダイアグラムにドラッグします。データ・アクションに/executeQueryという名前を付けます。

    この手順を実行すると、次のエントリがstruts-config.xmlファイルに作成されます。

    <action path="/executeQuery"
    className="oracle.adf.controller.struts.actions.DataActionMapping"
    type="oracle.adf.controller.struts.actions.DataAction" name="DataForm"/>

    データ・アクションを追加すると、アクションのclassName属性とtype属性にOracle ADFサブクラスが使用されます。Oracle ADFアクション・サブクラスを使用したアクション・マッピングの詳細は、「データ・バインドされたStrutsアプリケーションでのページ・フローについて」を参照してください。

動的フォームBeanを作成してページ・フォワードとデータ・アクションに関連付けるには、次のようにします。

  1. 新しいフォームBeanを作成します。

    「新規フォームBeanの作成」ダイアログにmyFormBeanという名前を入力します。Beanのタイプとして「org.apache.struts.actions.DynaActionForm」を選択します。「動的」チェック・ボックスを選択して「OK」をクリックします。

  2. 「フォーム・プロパティ」タブをクリックします。次のプロパティを追加します。

    Described in text

    この2つの手順を実行すると、次のように新しいフォームBeanがStruts構成ファイルに定義されます。

    <form-bean name="myFormBean" type="org.apache.struts.action.DynaActionForm" dynamic="true"
     <form-property name="salary" type="java.lang.Double"/>
     <form-property name="departmentId" type="java.lang.Integer"/>
    </form-bean>

  3. ページ・フォワードをmyFormBeanに関連付けます。

  4. 構造ウィンドウで、「searchRequest」ノードを右クリックして「編集...」を選択します。Struts構成エディタで「フォームBean」ノードを選択します。「フォームBean」ペインで、「myFormBean」を選択してsearchRequestアクションに関連付けます。

    Described in text

    ページ・フォワード、データ・ページおよびデータ・アクションを作成すると、デフォルトでDataForm Beanに関連付けられます。これにより、すべてのバインディング・コンテナの属性がそのフォームで使用可能になり、アプリケーションで必要になるActionForm Beanの作成作業を省略できます。ただし、この例で作成する検索フォームはDataForm Beanを使用できないため、検索に関連するアクションのname属性をmyFormBeanに変更する必要があります。

  5. executeQueryデータ・アクションをmyFormBeanに関連付けます。

  6. 構造ウィンドウで、「/executeQuery」ノードを右クリックして「編集...」を選択します。Struts構成エディタで「フォームBean」ノードを選択します。「フォームBean」ペインで、「myFormBean」をクリックしてexecuteQueryデータ・アクションに関連付けます。

データ・アクションにメソッドを追加するには、次のようにします。

  1. setBindVars()メソッドをexecuteQueryデータ・アクションに追加します。

    コンポーネント・パレットのメソッドをページ・フロー・ダイアグラムのデータ・アクション・アイコンにドラッグすると、データ・アクションをサブクラス化せずにメソッドをデータ・アクションに追加できます。次の図は、コンポーネント・パレットでのsetBindVars()メソッドの表示です。

    Described in text

    メソッドをデータ・アクションにドラッグすると、Struts構成ファイルのアクション・マッピングにそのメソッドを定義する複数のプロパティが追加されます。

    <set-property property="methodName" value="executeQueryUIModel.setBindVars"/>
    <set-property property="resultLocation" value="${requestScope.methodResult}"/>

  2. setBindVars()カスタム・メソッドのパラメータ名を定義します。

    構造ウィンドウで、「Struts Config」ノードを右クリックして「編集...」を選択します。Struts構成エディタで「アクション・マッピング」ノードを選択します。「アクション・マッピング」ペインで、「executeQuery」をクリックし「Properties」タブを選択します。次のプロパティを変更します。

    次のスクリーン・キャプチャを参照してください。

    Described in text

    JDeveloperによって、executeQueryデータ・アクションのアクションに次のエントリが追加されます。

    <set-property property="numParams" value="2"/>
    <set-property property="paramNames[0]" value="${param.salary}"/>
    <set-property property="paramNames[1]" value="${param.deptno}"/>

  3. 「OK」をクリックし、Struts構成エディタを閉じます。

検索ページを作成するには、次のようにします。

  1. ページ・フロー・ダイアグラムの「/searchRequest」アイコンをダブルクリックして、ビジュアル・エディタでsearchRequest.jspを開きます。
  2. コンポーネント・パレットで「Struts HTML」を選択します。

    HTMLフォーム・タグでは関連するアクションを指定できないため、検索フォームではStruts HTMLタグを使用する必要があります。

  3. コンポーネント・パレットからJSPページにformタグをドラッグします。JavaServer Pagesタグ・エディタが表示されます。

    JavaServer Pagesタグ・エディタで、アクション属性の値をexecuteQuery.doに設定して「OK」をクリックします。

  4. textタグを、コンポーネント・パレットからフォーム内にドラッグします。

    JavaServer Pagesタグ・エディタで、プロパティ属性の値をsalaryに設定して「OK」をクリックします。テキスト入力フィールドの前に「次の金額を超える給与:」というラベルを付けます。

  5. もう1つのtextタグをフォーム内にドラッグします。

    JavaServer Pagesタグ・エディタで、プロパティ属性の値をdeptnoに設定して「OK」をクリックします。

    このテキスト入力フィールドの前に「部門ID:」というラベルを付けます。
  6. 2つのテキスト入力フィールドの下にsubmitタグをドラッグします。
  7. フォームの上部にヘッダーを追加します(オプション)。

    Search form with heading

  8. ページを保存します。
  9. コンポーネント・パレットからページ・フロー・ダイアグラムに戻り、ページ・リンク要素を「/searchResults」アイコンと「/executeQuery」アイコンの間にドラッグします。ページ・フロー・ダイアグラムには次のように表示されます。

    Described in text

    注意: Struts HTMLフォームを追加してフォームにアクションを設定するとページ・リンクが作成されますが、JSPページ内で行われた編集はページ・フロー・ダイアグラムには自動的に反映されません。詳細は、「Webページの編集およびページ・フロー・ダイアグラムについて」を参照してください。

結果ページの作成とページ・フローの終了

結果ページを作成してページ・フローを終了するには、次のようにします。

  1. 開いていない場合はStrutsページ・フロー・ダイアグラムを開きます

  2. コンポーネント・パレットで、データ・ページ要素をクリックしてページ・フロー・ダイアグラムにドラッグします。データ・ページに/searchResultsという名前を付けます。

    この手順を実行すると、新しいアクション・マッピングがstruts-config.xmlファイルに作成されます。

  3. データ・ページ・アイコンをダブルクリックして、「ページの選択または作成」ダイアログ・ボックスを開き、searchResults.jspという名前のJSPページを作成します。「このページをすぐに編集」チェック・ボックスを選択して「OK」をクリックし、ページをビジュアル・エディタで開きます。

  4. データ・コントロール・パレットで「EmployeesView」を選択します。「ドラッグ・アンド・ドロップの形式」リストから読取り専用の表を選択し、EmployeesViewを空のJSPページにドラッグします。

    データ・コントロール・パレットには、そのページで使用可能なビジネス・サービスが表示されます。この手順では、ビュー・オブジェクトEmployeesView1を使用してHRデータベースのEmployees表の検索結果を表示する読取り専用フォームを追加します。

    データ・バインドされた表をWebページに追加すると、「ビュー」フォルダにDataBindings.cpxsearchResultsModelUI.xmlという2つのOracle ADFプロジェクト・ファイルが作成されます。DataBindings.cpxは、アプリケーション全体のバインディング・コンテナを定義します。searchResultsModelUI.xmlは、個々のWebページが使用するデータ・コントロールを定義するモデル参照です。これらのファイルでは表の表示に必要なメソッドおよびパラメータが完全に定義されるため、検索フォームに使用したカスタム・メソッドの定義および使用で実行した多くの手順を省略できます。

    この時点で、struts-config.xmlファイルが更新されます。次のように<set-property>要素がアクション・マッピングに追加され、関連付けられている<action>要素にモデル参照が定義されます。

    <set-property property="modelReference" value="searchResultsUIModel"/>

    Oracle ADFプロジェクト・ファイルの詳細は、「ADF固有のプロジェクト・ファイルについて」を参照してください。データ・コントロール・パレットの詳細は、「データ・コントロール・パレットを使用したUIコンポーネントの挿入」を参照してください。

  5. searchResults.jspを保存して閉じます。
  6. 「/searchResults」アイコンから「/searchRequest」アイコンへのページ・リンクを追加します。

    これにより、生成される検索結果ページの一番下にリンクが追加されます。

  7. 「/executeQuery」アイコンから「/searchResults」アイコンへのフォワードを追加します。

    これによって、executeQueryデータ・アクションの<forward>要素が次のように定義されます。

    <forward name="success" path="/searchResults.do"/>

    ページ・フロー・ダイアグラムには次のように表示されます。

    Completed page flow with forward and page links

アプリケーションの実行

データ・バインドされた検索ページをStrutsページ・フロー・ダイアグラムから実行します。

アプリケーションを実行するには、次のようにします。

  1. ビジュアル・エディタの上部の「struts-config.xml」タブをクリックして、ページ・フロー・ダイアグラムに戻ります。
  2. 「searchRequest」アイコンを右クリックして「実行」を選択します。
  3. 検索フィールドに値を入力して「Submit」をクリックすると、検索結果が表示されます。

    別の検索を実行するには、検索結果表の下のリンクをクリックします。

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