recursiveTreeNodesAdaptor doesn't go past first level
stdunbar Feb 11, 2009 12:01 PMI've seen that some other people have had the same problem I'm having and I wondered if anyone could point me in the right direction.
I'm attempting to use a recursiveTreeNodesAdaptor and, while the root nodes and their children render correctly nothing else does. The environment is RichFaces 3.3.0.GA, Tomcat 6.0.18, Java 1.6.0_10. I've taken out all Hibernate and other variables and have a hard-coded example that still doesn't work. I don't get the second level children nor can I "close" any of the parent nodes. Based on the code below do you have any thoughts? Is there additional debugging I could turn on to see what is happening in the recursiveTreeNodesAdaptor?
Thanks for any help.
<h:form>
<rich:tree switchType="ajax" stateAdvisor="#{locationStateAdvisor}">
<rich:recursiveTreeNodesAdaptor roots="#{locationHandler.rootNodes}" var="item" nodes="#{item.children}">
<rich:treeNode>#{item.locationName}</rich:treeNode>
</rich:recursiveTreeNodesAdaptor>
</rich:tree>
</h:form>Code for each node:
import java.util.List;
import java.util.ArrayList;
public class LocationUINode
{
private String nodeName;
private ArrayList<LocationUINode> children;
public LocationUINode( String name )
{
nodeName = name;
children = new ArrayList<LocationUINode>();
if( nodeName.equals( "Root Node 1" ) )
{
children.add( new LocationUINode( "Child 1.1" ) );
children.add( new LocationUINode( "Child 1.2" ) );
}
else if( nodeName.equals( "Root Node 2" ) )
{
children.add( new LocationUINode( "Child 2.1" ) );
children.add( new LocationUINode( "Child 2.2" ) );
}
else if( nodeName.equals( "Child 1.1" ) )
{
children.add( new LocationUINode( "Child 1.1.1" ) );
children.add( new LocationUINode( "Child 1.1.2" ) );
}
}
public List<LocationUINode> getChildren()
{
// added as the example code does something similar - has no effect
if( children == null )
children = new ArrayList<LocationUINode>();
return children;
}
public String getLocationName()
{
return nodeName;
}
}Code for the managed bean:
import java.util.List;
import java.util.ArrayList;
public class LocationHandler
{
private ArrayList<LocationUINode> srcRoots = null;
public List<LocationUINode> getRootNodes()
{
if( srcRoots == null )
{
srcRoots = new ArrayList<LocationUINode>();
srcRoots.add( new LocationUINode( "Root Node 1" ) );
srcRoots.add( new LocationUINode( "Root Node 2" ) );
}
return srcRoots;
}
}Any pointers or help would be greatly appreciated.