对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的东西。
http://www.blogjava.net/Files/steady/catalog.rar
程序的其它部分放在附件里面了,如果有兴趣了可以和我讨论tree2,讨论其它JSF的东西。
http://www.blogjava.net/Files/steady/catalog.rar