Posted on 2006-02-26 18:47
shaofan 阅读(5780)
评论(4) 编辑 收藏 所属分类:
Java
主要分为以下四个部分:
1、适合的客户端脚本(用于显示在HTML上,生成HTML代码)
2、标签库(用于生成JS的树定义,当然也可以用JAVABEAN) --JSP页面
3、树的数据结构(类、接口,用于为标签库提供树的数据结构,它是数据库记录和标签库的连接的纽带)
4、数据库的记录到树对象的转换
下面是我的实现:
1、JS脚本使用TigraTree,这是一个免费的面向对象的树脚本,功能比较齐全,树的定义简单,易于标签库生成JS代码
比如,以下定义了一个树:
1 var TREE_ITEMS =
2 [
3
4 [ '方圆公司','www.fangyuan.com',
5 [ '技术部','tech.fangyuan.com',
6 [ '救援队','rescue.fangyuan.com'],
7 [ '上门服务队','support.fangyuan.com']
8 ],
9 [ '市场部','market.fangyuan.com'],
10 [ '办公室','office.fangyuan.com',
11 [ '办公室厕所','wc.fangyuan.com'
12 ]
13 ],
14 ]
15 ];
然后使用以下代码在页面显示树:
<script language="JavaScript">
new tree (TREE_ITEMS, TREE_TPL );
</script>
其中,TREE_ITEMS是树的定义,TREE_TPL是对各个图标的定义,可以根据需要更改
2、编写Tree标签库,该标签库从session/request中读取一个实现了Tree接口的对象,遍历该对象,来生成上面所示的js变量TREE_ITEMS,并写到页面上,同时也生成new tree(...)代码,来显示这棵树。
代码就像这样:
<view:tree name="treDeps" selected="org_selectedNode"
captionProperty="DEP_NAME" href="actDepView.do"
paramID="id" paramProperty="DEP_ID"/>
name是bean的名字,selected是表示当前选中的节点的bean,用来在刷新的时候能记住树的状态。
树由很多个节点组成,每个节点带有一定的数据,也就是说,一个节点会和一个对象绑定。
captionProperty就是用来指定每个节点上的文字从绑定对象的哪个属性上取。href表示节点的链接,paramID/paramProperty用来生成动态链接的参数。
3、session/request中的tree对象是由业务方法从数据库读出并生成的。
另外,利用上面讲的基本原理,还可以实现很多功能。如各个节点可以定制使用不同的图标,而不再依赖于节点的状态来决定图标,也可以增加复选框、单选框等。甚至可以在数据量很大的时候,每次只取某层的节点,然后在点击某个节点旁的展开按钮时,即时从数据库取数据来显示。具体的就只能以后再写了。
(转移自 shaofan.blogbus.com )