6.86.  < rich:treeNodesAdaptor >

6.86.1. Description

The rich:treeNodesAdaptor provides possibility to define data models and create representations for them.

Expanded tree with <rich:treeNodesAdaptor>

Figure 6.209. Expanded tree with <rich:treeNodesAdaptor>


6.86.2. Key Features

  • Allows to define combined data models
  • Possibility to define nodes for processing via attributes

Table 6.413. rich : treeNodesAdaptor attributes

Attribute NameDescription
bindingThe attribute takes a value-binding expression for a component property of a backing bean
idEvery component may have a unique id that is automatically created if omitted
includedNodeThis boolean expression is used to define which elements are processed
nodesDefines collection to use at the other (non-top) levels of iteration
renderedIf "false", this component is not rendered
varA request-scope attribute via which the data object for the current collection element will be used when iterating

Table 6.414. Component identification parameters

NameValue
component-typeorg.richfaces.TreeNodesAdaptor
component-classorg.richfaces.component.html.HtmlTreeNodesAdaptor
component-familyorg.richfaces.TreeNodesAdaptor
tag-classorg.richfaces.taglib.TreeNodesAdaptorTag

6.86.3. Creating the Component with a Page Tag

To create the simplest variant of rich:treeNodesAdaptor on a page, use the following syntax:

Example:


...
<rich:treeNodesAdaptor var="issue" nodes="#{model.issues}">
    ...
    <rich:treeNode>
        <!-- node content -->                           
    </rich:treeNode>
    ... 
    <!-- Others nodes -->                           
    ...
</rich:treeNodesAdaptor>
...

6.86.4. Creating the Component Dynamically Using Java

Example:


import org.richfaces.component.html.HtmlTreeNodesAdaptor;
...
HtmlTreeNodesAdaptor myTreeNodesAdaptor = new HtmlTreeNodesAdaptor();
...

6.86.5. Details of Usage

The typical variant of using:


...
    <rich:tree adviseNodeOpened="#{treeModelBean.adviseNodeOpened}" switchType="client">
        <rich:treeNodesAdaptor id="project" nodes="#{loaderBean.projects}" var="project">
            <rich:treeNode>
                <h:commandLink action="#{project.click}" value="Project: #{project.name}" />
            </rich:treeNode>
            <rich:treeNodesAdaptor id="srcDir" var="srcDir" nodes="#{project.srcDirs}">
                <rich:treeNode>
                    <h:commandLink action="#{srcDir.click}" value="Source directory: #{srcDir.name}" />
                </rich:treeNode>
                <rich:treeNodesAdaptor id="pkg" var="pkg" nodes="#{srcDir.packages}">
                    <rich:treeNode>
                        <h:commandLink action="#{pkg.click}" value="Package: #{pkg.name}" />
                    </rich:treeNode>
                    <rich:treeNodesAdaptor id="class" var="class" nodes="#{pkg.classes}">
                        <rich:treeNode>
                            <h:commandLink action="#{class.click}" value="Class: #{class.name}" />
                        </rich:treeNode>
                    </rich:treeNodesAdaptor>    
                </rich:treeNodesAdaptor>
            </rich:treeNodesAdaptor>
        </rich:treeNodesAdaptor>
    </rich:tree>
...

6.86.6. Relevant Resources Links

Here you can see the example of <rich:treeNodesAdaptor > usage and sources for the given example.