データ・アクションの連鎖について

複数の操作を実行した後でその操作の結果をWebページに表示する場合は、データ・アクションを連鎖できます。データ・アクションを連鎖すると、各データ・アクションが正しい順序で実行されます。

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

連鎖されたデータ・アクションの例

この例では、人事管理者が従業員のレコードを参照でき、オプションでページ上の複数レコードの1つを編集できるようにするとします。管理者がページ内のある行に対する編集ボタンをクリックした場合、アプリケーションでは、選択した従業員を現在の行として設定してから、次のWebページにある編集フォームのデータを準備します。この例では、現在の従業員を設定する別のデータ・アクションが必要です。次の図は、アプリケーションのこの部分がページ・フロー・ダイアグラムでどのように表示されるかを示しています。

テキストで説明されている連鎖されたデータ・アクションの例

連鎖の最初のアイコンbrowseEmpPageはデータ・ページを表しています。このデータ・ページは、データ・フォワード・アクション、アクション・フォワード、および参照フォームが表示されるWebページの組合せです。

browseEmpPage.jspで生成されたWebページで、人事管理者がある従業員の編集ボタンをクリックすると、アプリケーションでは、値がeditのアクション・フォワードに対するマッピングが検索され、setCurrency.doにフォワードされます。setCurrencyにはWebページへのフォワードが含まれていないため、ダイアグラムではsetCurrencyはデータ・アクションとして表されています。setCurrencyでは、現在の行が設定され、別のアクションeditRowPage.doにフォワードされます。

最後のアイコンeditRowPageは別のデータ・ページです。データ・フォワード・アクション、アクション・フォワードおよび編集フォームが表示されるWebページの組合せを表しています。

次のスニペットは、アプリケーションのStrutsコンフィギュレーション・ファイル内の記述であり、一連の連鎖されたデータ・アクション・サブクラスであることが明確に示されています。

<action path="/browseEmpPage" 
  <forward name="edit" path="/setCurrency.do"/>
</action>
<action path="/setCurrency" ...
  <forward name="success" path="/editRowPage.do"/>
</action>
<action path="/editRowPage" ... />    

連鎖されたデータ・アクションのリクエスト・パラメータの消去

Webアプリケーションで、あるデータ・アクションから別のデータ・アクションにフォワードする場合、デフォルトで、最初のデータ・アクションからのリクエスト・パラメータが保持されます。JDeveloperでは、これらのリクエスト・パラメータ内のイベントが渡されます。

最初のデータ・アクションに含まれているイベントは、連鎖の次のデータ・アクションに移動したときに実行する必要がない場合があります。データ・アクションを連鎖する場合に元のリクエスト・パラメータが渡されないようにするには、最初のデータ・アクションの<forward>redirect属性を"true"に設定して、最初のリクエストからのパラメータを消去する必要があります。消去していない場合は、最初のデータ・アクションに対してライフサイクルで実行されるfindForwardメソッドで、2番目のデータ・アクションにフォワードするときに最初のリクエストで渡されたフォーム値の再適用が試行され、一連のエラー・メッセージが生成されます。

redirect属性が"true"に設定されている場合は、ブラウザによって新規のリクエストが発行され、前のリクエストからのすべてのパラメータが消去されます。


データ・ページおよびデータ・アクションについて