ビジネス・サービスが、データ・コレクションでの行の現在位置をサポートしている場合、URLリンクで、公開されている「現在の行の設定」操作をそのコレクションに対して使用できます。たとえば、あるWebページでは表示される表を含むフォームを作成し、他のWebページでは入力フォームを作成しようと考える場合があります。表示される表でURLリンクを使用して、現在の行情報をADFデータ・アクションに渡し、そのADFデータ・アクションにより、指定された行に関する編集フォームを表示します。
注意: これと同じ手法を使用して、コレクションにある特定のデータ・オブジェクトを削除できます。実際、現在の行に対して実行される操作は、リンクのターゲットであるADFデータ・アクションによって決定されます。
現在の行のリンクを表示する表を作成するには、次のようにします。
データ・コントロール・パレットで、目的のデータ・コレクションを選択します。
表示用の表を作成するには、データ・コントロール・パレットで、表で表示する属性を持つコレクション・ノードを選択します。ドロップダウン・リストでデフォルトで選択されている読取り専用の表を変更しないでください。
既存のHTMLフォームに表を挿入します。ビジュアル・エディタのデザイン・ビューでは、同じ破線のボックスの中にそれらの表とボタンが表示されます。このことは、それらが同じHTMLフォーム要素に所属していることを示します。Webページのデザイン・ビューは、次のようになります(全体表示ではありません)。
これで、ビジュアル・エディタで表を編集し、列を追加して、行のキーを編集ページに渡すリンクをその中に含めることができます。表の内側をクリックし、右クリックして、「表」メニュー項目 から「列の挿入」を選択します。
リンクを指定するために、選択済のコレクションを開き、次のように選択します。
「Operations」フォルダから 「setCurrentRowWithKey(String)」を選択。キーを渡す場合、フォームのURLには行キーの値は表示されません。この操作は、データ・コレクションが、マルチパートの属性キーを定義している場合に使用できます。
または
「Operations」フォルダから 「setCurrentRowWithKeyValue(String)」を選択。この操作は、データ・コレクションが、単一のキー属性を使用していて、マルチパートの属性キーは定義していない場合にのみ使用します。キーを値として渡す場合、フォームのURLに行キーの値が表示されます。
次に、ドロップダウン・リストから「Find Row Link」を選択します。
2番目の行にある最初の列にリンクを追加します(再度、データ・コントロール・パレットの上端から、forEach文の下のフィールドに選択項目をドラッグします)。Webページのデザイン・ビューは、次のようになります(全体表示ではありません)。
リンクを編集するために、リンクを右クリックし、「タグの編集」を選択します。
setCurrentRowWithKey(string)を使用する場合、タグを次のように編集します。
targetDataPage .do?event=setCurrentRowWithKey&Arg0=<c:out value='${Row.rowKeyStr}' />
Edit
必要な場合はターゲット・データ・アクションの名前を指定し(デフォルトでは、Webページと同じ名前を使用します)、リンクのテキストを指定します。
setCurrentRowWithKeyValue(string)を使用する場合、タグを次のように編集します。
targetDataPage .do?event=setCurrentRowWithKey&Arg0=<c:out value='${Row.rowKeyStr}' />
Edit
必要な場合はターゲット・データ・アクションの名前を指定し(デフォルトでは、Webページと同じ名前を使用します)、名前"setCurrentRowWithKeyValue"を使用してイベントを定義し、コレクションのキー値を識別する属性の名前(たとえば、Employeeコレクションの場合はRow.EmployeeNumber
)を指定し、最後にリンクのテキストを指定します。
「OK」をクリックして、表の中のリンクを更新します。Webページのデザイン・ビューは、次のようになります。
Strutsページ・フローでの現在の行イベントの処理
Strutsページ・フローを使用し、 setCurrentRowWithKey()
またはsetCurrentRowWithKeyValue()
のどちらかを使用して行キーを渡す場合、イベントに一致するよう、ページ・フォワードの名前を設定する必要があります。その結果、たとえば、setCurrentRowWithKey
またはsetCurrentRowWithKeyValue
(または、リンク定義ですでに定義した他のイベント名)に設定します。ページ・フォワードにより、現在の行情報を表示する目的で使用されるデータ・アクションが識別されます。たとえば、あるアクションを使用して編集用Webページを表示し、ユーザーが行データを編集できるようにしたいと考えることがあります。
個別の編集ページで現在の行イベントを処理するには、次のようにします。
ページ・フロー・ダイアグラムを開き、新しいデータ・ページ( /editPage
)を挿入して、それら2つの間でフォワード遷移を描きます。
作成したWebページ用のリンクに対して指定したイベントの名前に合せて、ページのフォワード遷移に名前を付けます。
または
データ・コントロール・パレットを使用し、同じデータ・コレクションに対する「setCurrentRowWithKey(string)」または「setCurrentRowWithKeyValue(string)」操作を新しいデータ・ページ(editPage)にドロップします。
新しいデータ・ページ(editPage)用のWebページを作成し、データ・コントロール・パレットから同じデータ・コレクションを「Input Form」としてドロップします。
ページ・フローに戻り、入力フォームにある「Submit」ボタンのイベント名に合せて、フォワード遷移の名前を「Submit」に変更します。
モデル1 Webページのイベント処理について
モデル1 Webページで、Strutsなしの作業をする場合、oracle.adf.controller.lifecycle.PageLifeCycle
をサブクラス化する必要があります。その中で、次のようなイベントを処理します。
public void onSetCurrentRowWithKey(LifecycleContext ctx)
{
super.invokeActionBinding(ctx, "setCurrentRowWithKey");
try
{
ctx.setForwardPath("targetPage.jsp");
ctx.setRedirect(true);
}
catch(Exception e)
{
e.printStackTrace();
}
}
Bean属性を主キーとして指定
Oracle ADFアプリケーション用のStrutsページ・フローの作成
Oracle ADFを使用したモデル1形式のWebページの作成
Copyright © 1997, 2004, Oracle. All rights reserved.