5 Replies Latest reply on Sep 22, 2007 12:27 PM by maksimkaszynski

    How to get data from treeNode

    ratondeau

      Hi,

      I tried the following code (a modified version of treeNodesAdaptor demo) and it works great. to set the current node selected I pass the treeNodeAdaptor via f:attribute and do set the Data in the backing bean.

      <rich:tree switchType="client" ajaxSubmitSelection="true">
       <rich:treeNodesAdaptor id="project"
       nodes="#{contentEditTreeBean.projects}" var="project">
       <rich:treeNode icon="#{project.icon}" iconLeaf="#{project.icon}">
       <a4j:commandLink reRender="dynamicNavigation"
       actionListener="#{contentEditTreeBean.nodeClicked}"
       value="#{project.name}">
       <f:attribute name="content" value="#{project}" />
       </a4j:commandLink>
      
       </rich:treeNode>
       <rich:treeNodesAdaptor id="packets" var="packet"
       nodes="#{project.packages}">
       <rich:treeNode icon="#{packet.icon}" iconLeaf="#{packet.icon}" >
       <a4j:commandLink actionListener="#{contentEditTreeBean.nodeClicked}"
       value="#{packet.name}">
       <f:attribute name="content" value="#{packet}" />
       </a4j:commandLink>
       </rich:treeNode>
      ...
      


      public void nodeClicked(ActionEvent event){
       Object obj = event.getComponent().getAttributes().get("content");
       currentNode = obj;
       System.out.println(obj.getClass());
      }
      


      Is there a better way to get the data of the selected node? Maybe via treeNode treeNodeAdaptor...?

      Greets
      Matt

        • 1. Re: How to get data from treeNode
          jbuechel

          See:
          http://labs.jboss.com/file-access/default/members/jbossrichfaces/freezone/docs/devguide/en/html/RichFacesComponentsLibrary.html#recursiveTreeNodesAdaptor

          I didn't try it yet (because i'm using JBoss Seam) and actually even haven't known about it. It seems you can use it some how like this:

          <rich:tree switchType="server" value="#{project.data}" var="item" nodeFace="#{item.type}">
           <rich:nodeSelectListener type="demo.ListenerBean"/>
           ...
           <!-- Tree nodes -->
           ...
          </rich:tree>

          public class ListenerBean implements org.richfaces.event.NodeSelectedListener{
          ...
           public void processSelection(NodeSelectedEvent arg0){
           //Custom Developer Code
          ...
           UrObject object = (UrObject)arg0.getSource();
           }



          • 2. Re: How to get data from treeNode
            jbuechel

            Sorry the last post wasn't completely correctly:

            public void processSelection(NodeSelectedEvent nodeSelectedEvent)
             throws AbortProcessingException {
            
             UrObject object = (UrObject)((UITree)nodeSelectedEvent.getSource()).getRowData();
             }
            


            • 3. Re: How to get data from treeNode
              ratondeau

              It works super duper.
              Thanks for the quick answer.

              I am not yet completely familiar with all the rich faces components
              but now a bit more.

              • 4. Re: How to get data from treeNode
                lmk

                 

                "ratondeau" wrote:
                It works super duper.
                Thanks for the quick answer.

                I am not yet completely familiar with all the rich faces components
                but now a bit more.


                hello, Id like to do the same thing with suggestionBox;

                but I can't get the selected variable on the bean, even using <a4j:actionParam/>


                <rich:suggestionbox id="suggestionCompanyId" for="textCompany"
                tokens=",[" rules="none"
                suggestionAction="#{queryBean.autocompleteCompany}"
                ar="result" fetchValue="#{result.name}" rows="0" first="0"
                minChars="2" shadowOpacity="5" border="1" width="200"
                 height="150" shadowDepth="0" cellpadding="5"
                 style="background-color:yellow" binding="#{queryBean.mys}">
                <a4j:support event="onselect" reRender="client" action="#{queryBean.findClientOf}" ajaxSingle="false">
                <a4j:actionparam value="#{result.id}" assignTo="#{queryBean.selectedId}" />
                </a4j:support>
                <h:column>
                <h:outputText value="#{result.name}">
                </h:outputText>
                </h:column>
                </rich:suggestionbox>
                


                • 5. Re: How to get data from treeNode
                  maksimkaszynski