基本機能
uji:treeタグは、ツリー構造のデータを展開するための画面部品タグです。uji:treeタグは以下の動作をします。
beanとpropertyで指定されたデータBeanのプロパティを取得します。取得したオブジェクトはTreeNodeインタフェースまたはTreeModelインタフェースを持つ必要があります。TreeNodeインタフェースの場合は、このオブジェクトをツリーのルートとみなします。TreeModelインタフェースの場合は、getRootメソッドでルートを取得します。
uji:treeタグのコンテントにtype="tree"のレンダラ(uji:treeRendererタグによる展開形の指定)があれば、その内容を展開します。なければデフォルトの形式を展開します。展開形の中にuji:childrenタグがあれば、ツリー構造の展開をします。
uji:treeタグのコンテントにtype="row"のレンダラがあれば、ツリー構造を展開する途中の各行にその内容を展開します。なければデフォルトの形式を展開します。展開形の中にuji:childrenタグがあれば、ツリー構造の展開をします。
ツリー構造の展開では、インタフェースより子ノードの数を取得します。
子ノードがある場合は、type="node"のレンダラを展開します。展開形に uji:childrenタグがあれば、段下げをしながら再帰的に適用します。段下げは、type="indent"のレンダラを使用します。展開時にはインタフェースよりノードのクラス(データ属性)を取得し、これがclsアトリビュートの指定と一致するレンダラが使用されます。
子ノードがなければ、type="leaf"のレンダラを展開します。
uji:treeタグは、HTMLのFORMタグか、uji:formタグまたはuji:mcFormタグの中に記述します。
uji:treeタグのアトリビュートは以下を指定します。
アトリビュート名 | 省略 | 意味 | 省略時の動作 |
---|---|---|---|
bean | 可 | データBeanのJSP変数を指定します。 | 画面部品タグのカレントオブジェクトを使用します。 |
property | 可 | データBeanのプロパティ名を指定します。指定したプロパティはTreeNode、TreeModelいずれかのインタフェースを持つオブジェクトを返す必要があります。 | データBean自体がTreeNodeまたはTreeModelインタフェースを持つオブジェクトとして使用されます。 |
uji:treeタグのコンテントにはuji:treeRendererタグを0個以上記述します。それ以外のタグは記述できません。
JSP
<uji:tree bean="body" property="treeNodeProp" > <uji:treeRenderer type="node" > <img src="foldericon.gif"><uji:children /><BR> </uji:treeRenderer> <uji:treeRenderer type="leaf" > <img src="fileicon.gif"><uji:value /><BR> </uji:treeRenderer> </uji:tree>
beanアトリビュートは、他の画面部品タグのレンダラの中で、カレントオブジェクトが利用できる場合にのみ省略できます。
XML連携機能
uji:treeタグは、ツリー構造のデータを展開するための画面部品タグです。uji:treeタグは以下の動作をします。
beanが保持するXMLツリーからpropertyまたはxpathで指定された要素を取得し、ツリー情報として使用します。
leafNameで指定された要素がリーフとなります。leafName省略時は、複合要素のうちすべての子要素が単純要素であるものがリーフとなります。
リーフ以外の複合要素がノードになります。
uji:treeタグのコンテントにtype="tree"が指定されたレンダラ(uji:treeRendererタグによる展開形の指定)があれば、そのコンテントを画面に展開します。なければデフォルトの形式で展開します。コンテントの中にuji:childrenタグがあれば、ルートノードを展開します。
ノードの展開では、ノード内の子要素の数を取得します。子要素がある場合は、type="node"が指定されたレンダラを子要素の数だけ展開します。レンダラのコンテントにuji:childrenタグがあれば、段下げをしながら再帰的にレンダラを適用します。段下げとして、type="indent"のレンダラを使用します。展開時にはノードの要素名を取得し、uji:treeRendererタグのclsアトリビュートと比較され、値が一致するuji:treeRendererタグが使用されます。
リーフの展開では、type="leaf"が指定されたレンダラのコンテントが画面に展開されます。type="leaf"のレンダラがなければデフォルトの形式で展開します。
type="leaf"またはtype="node"が指定されたレンダラ内のカレントオブジェクトはnodeNameXPathで指定します。
イベントモデルではXML連携機能は利用できません。
uji:treeタグでは、XML連携機能を使用する際に以下のアトリビュートを指定します。これ以外のアトリビュートについては、“基本機能”を参照してください。
アトリビュート名 | 省略 | 意味 | 省略時の動作 |
---|---|---|---|
bean | 可 | データBeanまたはXMLデータBeanのJSP変数を指定します。(*) | カレントオブジェクトを使用します。 |
property | 可 | ツリー情報として使用する要素をルート要素の子要素名で指定します。(*) | ルート要素を使用します。 |
xpath | 可 | ツリー情報として使用する要素をルート要素からの相対パスで指定します。(*) | ルート要素を使用します。 |
nodeNameXPath | 不可 | ノードおよびリーフの表示文字列となる要素または属性を、ノードまたはリーフとなる要素からの相対パスで指定します。(**) | 省略できません。 |
leafName | 可 | リーフとなる要素名を指定します。 | 複合要素のうち、すべての子要素が単純要素であるものがリーフとなります。 |
(*)“7.6.1 使用するXML要素の指定方法”を参照してください。
(**)“7.6.2 属性指定時の注意”を参照してください。
propertyまたはxpathには複合要素を指定します。指定された要素がツリー情報になります(*1)。
leafNameで指定された要素がリーフとなります。leafName省略時は、複合要素のうちすべての子要素が単純要素であるものがリーフとなります。
ノードとなる要素の子要素が、ノードの子ノードとなります。ただし、nodeNameXPathで指定された要素を除きます。
uji:treeRendererタグのコンテントでは、nodeNameXPathで指定された要素または属性がカレントオブジェクトとして使用されます(*1)。指定はノードまたはリーフとなる要素からの相対パスです。
nodeNameXPathで属性を指定した場合、その値の文字列(Stringクラスのオブジェクト)がカレントオブジェクトになります。属性値に改行が含まれる場合、改行の直前までが使用されます。
nodeNameXPathで単純要素を指定した場合、その内容の文字列(Stringクラスのオブジェクト)がカレントオブジェクトになります。要素の内容に改行が含まれる場合、改行の直前までが使用されます。
nodeNameXPathで指定した要素が複合要素の場合、その複合要素を保持するXMLデータBeanがカレントオブジェクトになります。
(*1) 要素の集合または属性の集合を指定した場合の動作は“7.6.3 要素や属性の集合を指定した場合の動作”を参照してください。
XML
<root> <tree> <name>食料品</name> <su> <name>酢</name> <item> <name>米酢</name> <price>123</price> <zaiko>100</zaiko> </item> <item> <name>りんご酢</name> <price>345</price> <zaiko>50</zaiko> </item> </su> <sake> <name>酒</name> <item> <name>清酒</name> <price>789</price> <zaiko>10</zaiko> </item> </sake> </tree> </root>
JSP
<uji:tree bean="body" xpath="tree" nodeNameXPath="name" leafName="item"> <uji:treeRenderer type="indent"> </uji:treeRenderer> <uji:treeRenderer type="node" cls="su"> <font color="red"><uji:value /></font><br><uji:children /> </uji:treeRenderer> <uji:treeRenderer type="node"> <uji:value /><br><uji:children /> </uji:treeRenderer> <uji:treeRenderer type="leaf"> <uji:value /><br> </uji:treeRenderer> </uji:tree>
表示画面
イベントモデル
uji:treeタグは、ツリー構造のデータを展開するための画面部品タグです。
uji:treeタグの動作については、“基本機能”を参照してください。
uji:treeタグは、イベントモデルで使用する際に以下のアトリビュートを指定します。これ以外のアトリビュートについては、“基本機能”を参照してください。
アトリビュート名 | 省略 | 意味 | 省略時の動作 |
---|---|---|---|
bean | 可 | managed beanの名前を指定します。 | 画面部品タグのカレントオブジェクトを使用します。 |
property | 可 | managed beanのプロパティ名を指定します。 | managed bean自体がTreeNodeインタフェースまたはTreeModelインタフェースを持つオブジェクトとして使用されます。 |
id | 可 | コンポーネントのIDを指定します。 | 自動的に付与されます。 |
uji:treeタグのコンテントには以下のタグが記述できます。
uji:treeRenderer(0個以上)
JSP
<f:view> <uji:tree bean="myBean" property="treeNodeProp" > <uji:treeRenderer type="node" > <img src="foldericon.gif"><uji:children /><BR> </uji:treeRenderer> <uji:treeRenderer type="leaf" > <img src="fileicon.gif"><uji:value /><BR> </uji:treeRenderer> </uji:tree> </f:view>