UITree walk does not pass
pdpantages Mar 11, 2008 7:45 PMHello Forum,
I am using:
Seam 2.0.1.GA
Richfaces 3.1.4.GA
I am trying to use UITree.walk() with DataVistitor to expand a tree
from a selected root, when the operator clicks a context menu.
Everything seems to work as expected except that
the argument parameter (second parm) is always null when my process() method is called.
I am trying to pass the UITree as the "argument" so that I can call
tree.queueNodeExpand( treeRowKey ) for each of the nodes.
The first parm is always properly set to an instance of treeRowKey, but
the second parm ("argument") is alwya null.
Am I missing something obvious?
Any hints will be greatly appreciated...
( I can resort to setting the UITree in my Expander instance,
so this is not a show stopper at this point... )
Thanks, PdP
My xhtml
<rich:tree switchType="ajax" stateAdvisor="#{subnetTreeImpl.alarmTreeStateAdvisor}" binding="#{subnetTreeImpl.alarmTree}" id="alarmTree" > <rich:recursiveTreeNodesAdaptor roots="#{treeData}" var="node" nodes="#{node.children}" > <rich:treeNode rendered="#{node.nodeType == node.nodeTypeSubnet}" iconLeaf="/img/subnet16.png" icon="/img/subnet16.png"> <s:link value="#{node.description}" styleClass="#{node.styleClass}" action="#{activeAlarmsImpl.setSubnetFilter}" > <f:param name="id" value="#{node.id}"/> </s:link> <rich:contextMenu disableDefaultMenu="true" event="oncontextmenu" attached="true" submitMode="ajax"> <rich:menuItem value="Expand" rerender="subnetTreePanel" action="#{subnetTreeImpl.expandSubTree}"> <s:conversationId/> </rich:menuItem> <rich:menuItem value="Collapse" rerender="subnetTreePanel" action="#{subnetTreeImpl.collapseSubTree}"> <s:conversationId/> </rich:menuItem> </rich:contextMenu> </rich:treeNode> </rich:recursiveTreeNodesAdaptor> </rich:tree>
Relevant parts of my backing bean
private final static TreeRange RANGE_UNCONSTRAINED = new TreeRange() { public boolean processChildren(TreeRowKey rowKey) { return true; } public boolean processNode(TreeRowKey rowKey) { return true; } }; private static class Expander implements DataVisitor { public void process(javax.faces.context.FacesContext faces,java.lang.Object obj1, java.lang.Object obj2) { if ( obj1 != null ) { TreeRowKey treeRowKey = (TreeRowKey) obj1; System.out.println ("DataVisitor rowKey" + treeRowKey ); } if ( obj2 != null ) System.out.println ("DataVisitor obj2 " + obj2.getClass() ); else System.out.println ("DataVisitor obj2 " + obj2); } } public String expandSubTree() { try { Object key = alarmTree.getRowKey(); TreeRowKey treeRowKey = (TreeRowKey) key; alarmTree.walkModel (javax.faces.context.FacesContext.getCurrentInstance(), new Expander(), RANGE_UNCONSTRAINED, treeRowKey, alarmTree ); } catch (Exception e) { e.printStackTrace(); } return null; }