2 Replies Latest reply: Jul 5, 2012 10:26 AM by lukas.b272 RSS

    How to commit JTree to <rich:tree>

    lukas.b272 Newbie

      Hello Community,


      I have the following problem and I would be happy if you could give me some advice.

      I have an existing Java application (JDK) which generates a JTree (with several hundred treenodes). Now, this tree should be transfered to a html web site.

      Best case would be a simple transfer the model of the JTree component to the RichFaces html tree component <rich:tree>, but i can’t find any examples for that, only some with filling a <rich:tree> from a xml file ( this would be not ideal).

      Is there any other way, maybe a direct way like written as my best case scenario?


      Thank you for your help (and time)!


      Greetings from Germany

        • 1. Re: How to commit JTree to <rich:tree>
          Brendan Healey Master

          It doesn't sound too difficult although I don't have any code written that does this. Assuming that you want to display

          instances of class MyClass as tree nodes you need to build a list of root nodes first and I guess you just need to look

          through the API to figure this out. On the richfaces side of things it's pretty simple:


          - public class MyClass implements Serializable, javax.swing.tree.TreeNode {


          - you will need to implement various abstract methods, exactly which ones will depend on your specific circumstances.

              A reasonable approach is to throw new UnsupportedOperationException("method name") initially and only implement

              the method if you see it being called. Your IDE should have an 'implement all abstract methods' function.


          - private List<TreeNode> rootNodes = new ArrayList<>(); // Java 7 diamond notation, use <TreeNode> for Java 5/6


          - List<MyClass> myList = ... build a list of MyClass from the jTree


          - rootNodes.clear();

          - rootNodes.addAll(myList);


          - <rich:tree value="#{bean.rootNodes}" ...


          See the showcase example here: http://showcase.richfaces.org/richfaces/component-sample.jsf?demo=tree&skin=blueSky





          • 2. Re: How to commit JTree to <rich:tree>
            lukas.b272 Newbie

            Hello Brendan,


            at first sorry for my late answer and thank your very much for your help!


            I tried out the example you linked, at first everything works fine but the result is just simple text like this:










            But i also got some error messages:



            1. Browser error message:


            Richfaces is undefined

            Line 21 Char 1


            this is line 21 from the HTML code:


            <input type="hidden" name="j_idt6:tree__SELECTION_STATE" id="j_idt6:tree__SELECTION_STATE" class="rf-tr-sel-inp" value="" />
            <script type="text/javascript">
            new RichFaces.ui.Tree("j_idt6:tree",{"toggleType":"client","selectionType":"ajax","ajaxSubmitFunction":"RichFaces.ajax(source,event,{\"clientParameters\":params,\"complete\":complete,\"incId\":\"1\"} )"} );
            <input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="402519301787076934:5641689052140157529" autocomplete="off" />


            Sorry for the bad formatting but as you know its generated by jsf...



            2. Error from Tomcatlog


            Exception starting filter richfaces

            java.lang.ClassNotFoundException: org.ajax4jsf.Filter

            at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)

            at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)




            followed by other errors like this


            Exception sending context initialized event to listener instance of class com.sun.faces.config.ConfigureListener

            java.lang.RuntimeException: com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! duplicate key: class javax.faces.validator.DoubleRangeValidator

            at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:292)

            at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4723)

            at ...




            at this point i dont know how to fix the problem.



            Thank you