複数の操作を実行した後でその操作の結果を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"
に設定されている場合は、ブラウザによって新規のリクエストが発行され、前のリクエストからのすべてのパラメータが消去されます。
Copyright © 1997, 2007, Oracle. All rights reserved.