マスター/ディテール関連から導出された属性の階層リストがビジネス・サービスのデータ・オブジェクトに含まれる場合、ツリー・コントロール・バインディングを作成し、これらの属性を表示できます。ツリー・バインディング・エディタを使用して、選択したビジネス・サービスのデータ・コレクションの関連をツリー・バインディングが横断する方法を決定する2つの規則(ルート・ノード規則とブランチ・ノード規則)を定義します。
現在、ツリー・コントロールは「データ・コントロール・パレット」では使用できません。ツリー・バインディングを作成し、Webページでバインディングにアクセスするには、次の手順を使用します。
バインディング・イテレータを作成するには、次のようにします。
StrutsベースのJSPを作成する場合、Strutsページ・フローを使用してページを作成する必要があります。
ADFデータバインド・コンポーネントをWebページに追加すると、「ページ定義」が自動的に作成されます。ツリー表を追加するWebページにADFデータバインド・コンポーネントが含まれていない場合、ページ定義ファイルを作成するよう求められます。
ツリー・コントロール・バインディングおよびルート・ノード規則を作成するには、次のようにします。
OrdersView
として表示されます。
警告: 選択したデータ・コレクションのマスター/ディテール・アクセッサがデータ・モデルに含まれていない場合、「ブランチ規則アクセッサ」リストは空として表示されます。リーフ(ターミナル)・ノードを除くツリーのすべてのブランチについて、モデル・プロジェクトのビジネス・サービスにアクセッサを定義する必要があります。
Viewobject rule: myPackage.CustomersView, CustLastName, OrdersView
ADF Business Componentsに基づくこの規則では、ツリーのルート・ブランチのノードとしてCustLastName
属性を表示し、OrdersView
ビュー・リンク・アクセッサを使用してドリルダウンし、顧客注文をツリーの2つ目のブランチとして表示することを定義しています。ここでは、注文ビュー・オブジェクトから表示する属性を定義する規則を追加する必要があります。
「ツリー・バインディング・エディタ」ダイアログの「規則の編集」タブをクリックし、最初のディテール・コレクションから表示する子ブランチ属性規則を定義します。
「データ・コレクション定義」リストで、ツリーのブランチ・ノードへの移入に使用するデータ・コレクションを選択します。これは、ツリーのノードを定義するディテール・コレクションです。たとえば、ツリーに注文ID情報を表示する元となる注文ディテール・コレクションです。
「表示属性」リストで、ツリーのブランチ・ノードとして表示する単一属性を選択します。たとえば、各顧客の姓などです。
「ブランチ規則アクセッサ」リストで、ツリーの最初のブランチ・データ・コレクションと次のブランチ間のリンクを指定するアクセッサを選択します。たとえば、注文コレクションと注文品目コレクションのビジネス・コンポーネント・アクセッサは、リストではOrderItemsView
として表示されます。
注意: ビジネス・サービス・モデル・プロジェクトで、選択したブランチ・データ・コレクションにこれ以外のアクセッサが定義されていない場合、リストには<none>
が表示されます。これは、選択したコレクションの属性がツリーでリーフ・ノードとして表示されるため、アクセッサが必要ないことを意味します。
「新しい規則を追加」をクリックし、子ブランチ・ノードの規則の定義を完了します。
「規則の表示」をクリックし、ルート・ノード規則を表示します。たとえば、顧客と注文の例では、次のように表示されます。
Viewobject rule: myPackage.OrdersItemsView, OrderId, OrderStatus, <none>
ADF Business Componentsに基づくこの規則では、ツリーの2つ目のブランチのノードとしてOrderId
およびOrderStatus
属性を表示することを定義しています。none
は、このブランチはリーフ・ノードで構成されているため、アクセッサがないことを意味します。
ビジネス・サービスがブランチを横断するためのアクセッサをサポートしているかぎり、「規則の編集」タブでこれらのステップを繰り返し、ツリーの新規ブランチを定義できます。
「OK」をクリックし、バインディング設定を保存します。
バインディング・エディタにより、定義した規則のエラー・チェックが行われます。次のエラー・メッセージが表示されます。
ツリー・バインディングの規則を正常に作成した後、EL式を使用してJSPページのバインディングにアクセスできます。
たとえば、次の式により、ルート・コレクションの属性値にアクセスし、ヘッダーとして表示します。
<c:out value="${bindings.DCTree.labels.CustLastName}"/>
ルート・ノードにアクセスするには、次の例のように、ルート・ノードで動作するforEach
ループを作成する必要があります。
<c:forEach var="Row" items="${bindings.DCTree.rootNodeBinding.children}">
子ノードにアクセスするには、次の例のように、子ノードで動作するforEach
ループを作成する必要があります。
<c:forEach var="childNode" items="${Row.children}">
次の例は、これらのEL式を使用して表のツリー・バインディングを表示する方法を示します。
<table border="1" width="100%">
<tr>
<th>
<c:out value="${bindings.DCTree.labels.CustLastName}"/>
</th>
<th>
Details
</th>
</tr>
<c:forEach var="Row" items="${bindings.DCTree.rootNodeBinding.children}">
<tr>
<td>
<c:out value="${Row.Dname}"/>
</td>
<td>
<table border="1" width="100%">
<c:forEach var="childNode" items="${Row.children}">
<tr>
<td><c:out value="${childNode.OrderId}" /> </td>
<td><c:out value="${childNode.OrderStatus}" /> </td>
<td><c:out value="${childNode.OrderTotal}" /> </td>
</tr>
</c:forEach>
</table>
</td>
</tr>
</c:forEach>
</table>
ADFデータ・コントロールを使用したHTML表の操作
JSPページのADFバインディング式の編集
Copyright © 1997, 2006, Oracle. All rights reserved.