オブジェクトの階層を表示するには、ADF Facesのツリー・コンポーネント<af:tree>
を使用します。ADF Facesのツリーでは、複数のルートを指定したり、ツリー内の各要素に任意の数の子要素を指定して、複数の親要素が子要素を共有できます。ツリーの各要素は、階層内でのレベルを示すようにインデントされます。コンポーネントには、ツリーを開閉(展開/折りたたみ)するメカニズムが組み込まれていますが、フォーカス機能はありません。フォーカス機能を使用する必要がある場合や、ツリー内の異なるノードに対するデータの表示する場合は、ADF FacesのTreeTableコンポーネントの使用を検討してください。
たとえば、次のツリーの図のように、ツリー・コンポーネントを使用して、関連する従業員がすぐ下にリストされている部門リストを表示できます。
ツリー・コンポーネントはoracle.adf.view.faces.model.TreeModel
を使用してデータにアクセスします。このクラスは、ADF Faces Tableコンポーネントがデータにアクセスする際に使用するCollectionModel
を拡張します。TreeModel
クラスの詳細は、「ADF Faces開発者ガイド」またはADF FacesのJavadocを参照してください。
各要素のデータの表示には、nodeStamp
ファセットが使用されます。各要素にコンポーネントを作成するかわりに、このnodeStamp
は、ADF Faces Tableコンポーネントに対して行がレンダリングされるように、繰り返しレンダリングされます。var
属性は、現在のノードへのアクセスを提供します。前述の例では、次のコード・サンプルのように、node
を変数として使用することで、従業員の名前の表示に使用するoutputText
コンポーネント・タグは、#{node.name}
を値として使用できます。
<af:tree var="node">
<f:facet name="nodeStamp">
<af:outputText value="#{node.lastname}"/>
</f:facet>
</af:tree>
ユーザーがノードを開く(または閉じる)と、DisclosureEvent
が送信されます。このイベントのisExpanded
メソッドは、ユーザーによるノードの操作(開いているか、閉じているか)を判断します。DiscolsureEvent
にはリスナーが関連付けられています。ツリーのDisclosureListener
属性は、マネージドBeanのメソッドにバインドできます。その後このメソッドは、DiscolsureEvent
に応答して(つまり、ユーザーがノードを開閉する都度)起動されます。
ADF Facesツリー・コンポーネントは、oracle.adf.view.faces.model.PathSet
クラスのインスタンスを使用して、開かれた要素を判断します。このインスタンスは、コンポーネントのtreeState
属性として格納されます。このインスタンスを使用すると、階層内での要素の開閉状態をプログラムによって制御できます。PathSet
インスタンスによって格納された要素は、開いていると判断されます。他すべての要素は閉じられます。このクラスは、addAll()
およびremoveAll()
と同様の操作もサポートします。
<af:tree>
タグ内では、次のコンポーネント・タイプを使用できます。
EditableValueHolder
を実装する変更可能なコンポーネント
UIXShowDetail
コンポーネント
ADF Facesツリーの作成および編集
ADF Faces Coreライブラリ - <af:tree>タグ
Copyright © 1997, 2007, Oracle. All rights reserved.