Hi!
Could someone tell me where I am wrong that my <tr:tree> always displays
just the root elements?
As the tree inited from the persistence layer (using Seam and EJB3) did not
work, I stepped back and setup the following simple test, but still I do not
see any "open" handles, nor is the "getChildren" getter on my TestBean ever
called, therefore  the log message in getModel() also states a tree depth of
zero. On the adapter I removed some "model = null" instructions during
debugging.

Here is the <tr:tree>, the classes used and the faces-config.xml part.

Any help would be great!
Thanks in advance!




   <tr:tree id="grouptree" var="cat" value="#{groupsAdapter.model}">
           <f:facet name="nodeStamp">
              <tr:commandLink text="#{cat.name}" styleClass="nodeText">
                 <!--  outcommented actionListener  -->
                 </tr:commandLink>

           </f:facet>
   </tr:tree>


============================================================================
=========
        
 <managed-bean>
       <managed-bean-name>treeTest</managed-bean-name>
       <managed-bean-class>japp.jsf.TreeTest</managed-bean-class>
       <managed-bean-scope>session</managed-bean-scope>     
  </managed-bean>

 <managed-bean>
       <managed-bean-name>groupsAdapter</managed-bean-name>
       <managed-bean-class>japp.jsf.TreeModelAdapter</managed-bean-class>
       <managed-bean-scope>session</managed-bean-scope>
       <managed-property>
            <property-name>instance</property-name>
            <value>#{treeTest.roots}</value>
        </managed-property>
        <managed-property>
            <property-name>childPropertyName</property-name>
            <value>children</value>
        </managed-property>
 </managed-bean>


============================================================================
===0


public class TreeModelAdapter {

        private String childPropertyName;
        private Object _instance = null;
        private transient TreeModel _model = null;
            
        Log logger = LogFactory.getLog(TreeModelAdapter.class);
            
        public TreeModelAdapter() {}
                

        public TreeModel getModel() throws IntrospectionException    {
              if (_model == null)  {
                _model = new ChildPropertyTreeModel(getInstance(),
getChildPropertyName());
              }
              logger.info("Tree depth: "+_model.getDepth());
              return _model;
        }

        public String getChildPropertyName()   {
             return childPropertyName;
        }

        public void setChildPropertyName(String propertyName)   {
                childPropertyName = propertyName;            
        }

         public Object getInstance() {
             return _instance;
         }


    public void setInstance(Object instance)   {
      _instance = instance;
    }
    
            
        public void setListInstance(List<Object> instance) {
             setInstance(instance);
        }  
            
            
        @SuppressWarnings("unchecked")
        public List<Object> getListInstance()   {
             return (List<Object>)getInstance();
        }
            
            
}



============================================================================
==

public class TreeTest {
        
        public TreeTest() {
                
        }
        
        private List<TestBean> roots;
          
    public List<TestBean> getRoots() {
        if(roots != null) return roots;
        roots = new ArrayList<TestBean>();
        TestBean r1 = new TestBean("root1");
        TestBean ch1 = new TestBean("ch1");
        TestBean enk11 = new TestBean("enk1");
        ch1.addChild(enk11);
        r1.addChild(ch1);
        
        TestBean r2 = new TestBean("root2");
        TestBean ch2 = new TestBean("ch2");
        TestBean enk21 = new TestBean("enk21");
        TestBean enk22 = new TestBean("enk22");
        ch2.addChild(enk21);
        ch2.addChild(enk22);
        r2.addChild(ch2);
        TestBean ch3 = new TestBean("ch3");
        TestBean enk23 = new TestBean("enk23");
        ch3.addChild(enk23);
        r2.addChild(ch3);
        roots.add(r1);
        roots.add(r2);
        return roots;
    }
}


============================================================================
====

public class TestBean {
        private List<TestBean> children;
        private String name;
        
        public TestBean() {
                children = new ArrayList<TestBean>();
        }
        public TestBean(String name) {
                this.name = name;
                children = new ArrayList<TestBean>();
        }
        public void addChild(TestBean ch) {
                children.add(ch);
        }
        //never called !!
        public List<TestBean> getChildren() {
                System.out.println("getChildren called on "+name);
                System.out.print("getChildren returns: ");
                for(TestBean ch : children) {
                        System.out.print(ch.toString());
                }
                System.out.println();
                return children;
        }
        
        public void setChildren(List<TestBean> children) {
                this.children = children;
        }
        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        
        public String toString() {
                return name+" kids: "+children.size();
        }       
}

    
    


Reply via email to