Vincent.Chan‘s Blog

常用链接

统计

积分与排名

网站

最新评论

转载:Tree2实践

通过一次小小的实践,终于了解如何使用tomahawk中的tree2这个组件了,并且写了小段程序,从xml中读取树的结构,生成一个tree,不过tree2不能直接和xml绑定是一个遗憾,那样就会省不少事情了。记下一点心得,以供后来参考了。

         tree2的操作分为两部分,一部分是在页面中通过tag定义样式相关的东西,一部分就是通过编程添加树的节点,起初看了sample以后总是以为这东西有多么的复杂,其实逻辑是很简单的,只是sample中定义了多种不同的样式的节点,看上去很复杂而已。

下面附上我对sample简化过的这段tag来说明一下。

<t:tree2 value="#{catalog.node}" var="node" id="clientside" varNodeToggler="t" >

    <f:facet name="folder">

        <h:panelGroup>

            <f:facet name="expand">

                <t:graphicImage value="images/yellow-folder-open.png" rendered="#{t.nodeExpanded}" border="0"/>

            </f:facet>

            <f:facet name="collapse">

                <t:graphicImage value="images/yellow-folder-closed.png" rendered="#{!t.nodeExpanded}" border="0"/>

            </f:facet>

            <h:outputText value="#{node.description}"/>

        </h:panelGroup>

    </f:facet>

</t:tree2>

tree2的主tag定义了tree的根节点和一些相关的参数。嵌套的那个facet定义了一种节点的样式,包括展开与关闭时的图片,以及显示的文字内容。

在程序里面,我们root TreeNodeBase = new TreeNodeBase(…)来创建一个root节点,然后通过root.getChildren().add(new TreeNodeBase(…))为其添加子节点,任何一个节点都可以添加任意多的子节点,通过这样的操作,我们可以很容易的生成一个tree的结构了,实际上,这个tree的结构是通过递归从xml中读取出来,生成一个和xml tree完全相同的结构。

除了明白如何去用这个tree2之外的收获就是,终于明白了如何去通过递归方法遍历一个树形结构,虽然在学校里学过遍历的算法,也抄过例程,但从来没有理解过是怎么一回事,终于在实践中理解了,实践才是软件的根本之道。
   程序的其它部分放在附件里面了,如果有兴趣了可以和我讨论tree2,讨论其它JSF的东西。

源文件下载

查看 解析Tree2 全文

posted on 2006-01-14 03:43 Vincent.Chen 阅读(396) 评论(0)  编辑  收藏 所属分类: JSF


只有注册用户登录后才能发表评论。


网站导航: