この手順のタスクは以下のとおりです。
新しいページ フローを追加すると、デフォルトでページ フロー パースペクティブに表示されます。ページ フロー パースペクティブでは、特定のページ フローに対して以下の 4 つの異なるビューが提供されます。
[ページ フロー エクスプローラ] には、現在のページ フローの論理ビューが表示されます。ページ フローに含まれるアクション、ページ、ページ フローに含まれるアクション、JSP ページ、フォーム Bean などすべてがリストされます。[ページ フロー エクスプローラ] では、ファイル ツリーと似た方法で要素が表示されます。ただし、このツリーは、ページ フロー アーティファクトのファイル システム レイアウトではないことに注意する必要があります。(ファイル システム上のページ フローの実際のファイル ツリーを確認するには、ナビゲーター ビューに切り替えます)。
最上位のノードとして、現在のページ フロー コントローラのパッケージが表示されます。これは、JSP が格納される WebContent の下のフォルダ名にもなります。ページ フローでは、パッケージのフォルダ名と WebContent のフォルダ名は、常に一致しなければなりません。ここでは、customerManagement という名前が共有されます。
最初の子ノードとして、ページ フロー コントローラ クラスが表示されます。ここでは、CustomerManagementController.java です。
次のノードには、アクションがリストされます。ここでは、begin というアクションが 1 つのみ存在します。このアクションは、新しい各ページ フローに対してデフォルトで作成されます。
次に JSP がリストされます。ここでは、index.jsp という JSP が 1 つのみ存在します。
この時点では、その他のノードはすべて空です。これは、このページ フローがまだ開発されていないためです。この後で、これらのノードに項目を追加していきます。
ページ フロー エディタには、現在のページ フローの特定の要素がグラフィカル表示されます。
グラフィカル表示には、ページ フローのアクション、JSP、およびアクションとページとの間の接続が表示されます。下の図では、begin アクションが中央のペインに表示されてます。begin アクションから index.jsp ページに伸びている矢印は、begin アクションが呼び出されたときにユーザを index.jsp に転送する Forward を表します。
左側のペインは上流ペインと呼ばれ、右側のペインは下流ペインと呼ばれます。[ページ フロー エディタ] は常に左から始まり右に進むようにフローの方向を表している点に注意してください。
現在示されているページ フローを変更するには、下図に示すように、緑色の三角形マークのドロップダウン リストをクリックします。
下図のドロップダウン リストに示すように、Web アプリケーションには次の 2 つのページ フローが存在します。(1) Controller (各 Web アプリケーションに作成されるデフォルトのページ フロー) と (2) CustomerManagementController (このチュートリアルの残りで開発するページ フロー) です。
[ページ フロー エクスプローラ] タブ上のアイコンをクリックすることによっても、利用可能なページ フローのリストにアクセスできます。下図では、このアイコンを赤丸で囲んでいます (左横に接しているアイコンをクリックすると、[新しいページ フロー] ウィザードが起動します)。
[ページ フロー概要] では、ページ フローのグラフィカルな概要が表示されます。すべてのアクション、ページ、およびそれらの関係が表示されます。
[ページ フロー概要] 内でノードを選択すると、[ページ フロー エディタ] の中央のペインに同じノードが表示されます。
[ページ フロー概要] 内のアイコンをダブルクリックすると、ソース ビューに、関連するソース コードが表示されます。
[ページ フロー概要] の直下にある [ソース エディタ] には、ページ フロー コントローラ クラスの Java ソースが表示されます。
この手順では、コントロール (CustomerControl.java) をページ フローに追加します。ページ フロー クライアントは、このコントロールのメソッド (addCustomer、editCustomer など) によって、データベース内の顧客データと対話できます。ページ フロー クライアントとデータベースとの間の対話は、次の 3 つのクラスから構成されます。
CustomerControl.java コントロールは、クライアントの CustomerManagementController.java とデータベース コントロールの CustomerDB.java との間のラッパー中間クラスとして機能します。このラッパー中間物によってアプリケーションのモジュール性が向上し、ユーザは (1) 将来の必要時に異なるデータベース コントロールに切り替えることができ、(2) ラッパー クラス内で再キャストされる任意のデータ型を実行できます。
このチュートリアルでは、再キャストは実際に発生しませんが、再キャストが必要になる状況は簡単に想像できます。たとえば、ページ フローでは Customer[] オブジェクトを期待していたが、データベース コントロールが Customer オブジェクトの ArrayList を返す場合などが考えられます。このような状況でも、中間ラッパー クラスを使うと、データをページ フローに渡す前に ArrayList を Customer[] にロードできます。
ここでは、次の 4 行のコードをページ フロー コントローラ クラス CustomerManagementController.java に追加しています。
import org.apache.beehive.controls.api.bean.Control; import controls.CustomerControl; ... @Control private CustomerControl customerControl;
これらの行では、ページ フローに対して Customer コントロールを宣言しており、これによって、コントロール メソッドを呼び出すことができます。
ページ フロー クラスに対してコントロールを宣言すると、そのコントロールは利用可能なメソッドのリストと共に [参照先のコントロール] ノード内に表示されます。
この手順では、ページ フロー クラスを編集して、CustomerControl から顧客データを取得するようにします。具体的には、1 つのアクション (すなわち、getCustomers() と呼ばれるアノテーション付きのメソッド) を、ページ フロー クラスに追加します。このクラスが、Customer オブジェクトの配列を返す CustomerControl メソッド getCustomers() を呼び出します。(次の手順では、Customer オブジェクトのこの配列を HTML テーブルとして表示する JSP を作成します)。
@Jpf.Action(forwards = { @Jpf.Forward(name = "success", path = "", actionOutputs = { @Jpf.ActionOutput(name = "getCustomersResult", type = model.Customer[].class) }) }) public Forward getCustomers() { Forward forward = new Forward("success"); model.Customer[] getCustomersResult = customerControl.getCustomers(); forward.addActionOutput("getCustomersResult", getCustomersResult); return forward; }
チュートリアルを移動するには、矢印をクリックしてください。