JBoss.orgCommunity Documentation

6.90.  < rich:recursiveTreeNodesAdaptor >

The <rich:recursiveTreeNodesAdaptor> is an extension of a <rich:treeNodesAdaptor> component that provides the possibility to define data models and process nodes recursively.


Table 6.486. rich : recursiveTreeNodesAdaptor 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
includedThis boolean expression is used to define which elements of both collections are processed. Default value is "true".
includedNodeThis boolean expression is used to define which elements are processed. Default value is "true".
includedRootThis boolean expression is used to define which elements are processed applying to "roots" collection. Default value is "true".
nodesDefines collection to use at the other (non-top) levels of iteration
renderedIf "false", this component is not rendered
rootsDefines collection to use at the top of iteration
varA request-scope attribute via which the data object for the current collection element will be used when iterating

Table 6.487. Component identification parameters

NameValue
component-typeorg.richfaces.RecursiveTreeNodesAdaptor
component-classorg.richfaces.component.html.HtmlRecursiveTreeNodesAdaptor
component-familyorg.richfaces.RecursiveTreeNodesAdaptor
tag-classorg.richfaces.taglib.RecursiveTreeNodesAdaptorTag

Example:


...
<rich:tree switchType="ajax" stateAdvisor="#{treeDemoStateAdvisor}">
    <rich:recursiveTreeNodesAdaptor roots="#{fileSystemBean.sourceRoots}" var="item" nodes="#{item.nodes}" />
</rich:tree>
...

Example:

import org.richfaces.component.html.HtmlRecursiveTreeNodesAdaptor;

...
HtmlRecursiveTreeNodesAdaptor myRecursiveTreeNodesAdaptor = new HtmlRecursiveTreeNodesAdaptor();
...

The <rich:recursiveTreeNodesAdaptor> component has a "roots" attribute that defines collection to use at the top of recursion.

The "nodes" attribute defines collection to use on another recursion levels.

The "var" attribute is used to access to the current collection element.

The <rich:recursiveTreeNodesAdaptor> component can be nested without any limitations. See the following example.

Example:


...
<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:recursiveTreeNodesAdaptor id="dir" var="dir" root="#{project.dirs}" nodes="#{dir.directories}">
            <rich:treeNode>
                <h:commandLink action="#{dir.click}" value="Directory: #{dir.name}" />
            </rich:treeNode>            
            <rich:treeNodesAdaptor id="file" var="file" nodes="#{dir.files}">
                <rich:treeNode>
                    <h:commandLink action="#{file.click}" value="File: #{file.name}" />
                </rich:treeNode>
            </rich:treeNodesAdaptor>
            <rich:treeNodesAdaptor id="file1" var="file" nodes="#{dir.files}">
                <rich:treeNode>
                    <h:commandLink action="#{file.click}" value="File1: #{file.name}" />
                </rich:treeNode>
            </rich:treeNodesAdaptor>
            <rich:recursiveTreeNodesAdaptor id="archiveEntry" var="archiveEntry"
                roots="#{dir.files}" nodes="#{archiveEntry.archiveEntries}" 
                includedRoot="#{archiveEntry.class.simpleName == 'ArchiveFile'}"
                includedNode="#{archiveEntry.class.simpleName == 'ArchiveEntry'}">      
                <rich:treeNode id="archiveEntryNode">
                    <h:commandLink action="#{archiveEntry.click}" value="Archive entry: #{archiveEntry.name}" />
                </rich:treeNode>
            </rich:recursiveTreeNodesAdaptor>
        </rich:recursiveTreeNodesAdaptor>
    </rich:treeNodesAdaptor>
</rich:tree>
...

Here you can see the example of <rich:recursiveTreeNodesAdaptor> usage.