Both recursiveTreeNodesAdaptor & treeNodesAdaptor (model adaptor components further in the text) components allow defining data model declaratively and binding treeNode components to tree model nodes. treeNodesAdaptor has a "nodes" attribute that's used to define a collection of elements to iterate through. Collections are allowed to include: lists, arrays, maps, XML NodeList & NamedNodeMap either as single object. The current collection element is accessible via a request-scoped variable named as "var" attribute value.

recursiveTreeNodesAdaptor is an extension of a treeNodesAdaptor component that allows you to define two different value expressions: the first, assigned by "roots" attribute is used at the top of recursion, the second "nodes" is used on another recursion levels (the second level and deeper).

Example
The information for this demo is generated and incorporated in the richfaces-demo.war file with Maven process. Demo artifacts are located under /WEB-INF/src folder.
As soon as you read this text, you have no such folder in your run-time enviroment right now.
If you use Jetty to run, use 'mvn jetty:run-war' command.

Model adaptor components can be nested without any limitations. The following code-snippet shows an example of using Nodes Adapter along with rich:tree

Code

Data model nodes are wired to treeNode components by nesting treeNode components with a "type" attribute not defined inside model adaptor components. The first rendered one is used, or the default one if all treeNode components are non-rendered.