dynamic tree and nodeSelectListener
srama1 Oct 13, 2008 11:47 PMI have a dynamic tree that is retrieving the node text from the database and it works perfectly fine in displaying the parent node and children.
I am using rich:tree, rich:recursiveTreeNodesAdaptor, rich:treeNode.
Now I am trying to get the feature of clicking the leafnode to open up the corresponding link. I am trying to use the nodeSelectionListener to implement this feature
and I see that it is not working in seam implementation. It never calls the node processing method in the bean.
I did couple of tests:
1. I tried to use different switchtype and ajaxSubmitSelection option, it did not work.
2. I tried to use simple rich:tree to get the nodeSelectionListener work outside seam framework, it works.
<rich:tree style="width:300px" nodeSelectListener="#{simpleTreeBean.processSelection}" reRender="selectedNode" ajaxSubmitSelection="true" switchType="client" value="#{simpleTreeBean.treeNode}" var="item"> </rich:tree>
3. I tried invoking the app in different browser it still doesn't call the nodeSelectListener implementation.
Any help on getting this work will be appreaciate. I was reading in forum at one of the thread were the problem was similar but I did not see any answer.
Any alternate solution to get this working.
Thanks,
Here is my code:
<rich:tree switchType="client" nodeSelectListener="#{configurationTreeManager.processSelection}" reRender="selectedNode" ajaxSubmitSelection="true"> <rich:recursiveTreeNodesAdaptor id="config" roots="#{configurationTreeManager.rootNodes}" var="config" nodes="#{config.childNodes}"> <rich:treeNode> <h:outputText value="#{config.configuration.nodeText}"/> </rich:treeNode> </rich:recursiveTreeNodesAdaptor> </rich:tree>
@Scope(ScopeType.CONVERSATION) @Name("configurationTreeManager") public class ConfigurationTreeManager { public void processSelection(final NodeSelectedEvent event) { final HtmlTree tree = (HtmlTree) event.getComponent(); nodeTitle = (String) tree.getRowData(); selectedNodeChildren.clear(); final TreeNode currentNode = tree.getTreeNode(tree.getRowKey()); if (currentNode.isLeaf()) { System.out.println("current tree node is a leaf"); } else { System.out.println("current tree node is not a leaf"); } } }