S2SH整合下的动态树(非Ajax)

  Dtree是个非常简单易用的JS类库,封装了JS对树型结构的一些复杂操作,其简单易用的API能使新手顺利的完成动态树,下载地址为: http://destroydrop.com/javascripts/tree/
  本文结合Struts2.X,Spring2.0,Hibernate3.0整合使用,数据库为简单起见使用MySQL,表结构的设计是根据Dtree的结构来的,Dtree基本数据字段如下:
idNumberUnique identity number.
pidNumberNumber refering to the parent node. The value for the root node has to be -1.
nameStringText label for the node.
urlStringUrl for the node.
titleStringTitle for the node.
targetStringTarget for the node.
iconStringImage file to use as the icon. Uses default if not specified.
iconOpenStringImage file to use as the open icon. Uses default if not specified.
openBooleanIs the node open.

SQL脚本如下:
create   database  exercise;
use   database  exercise;
create   table  dtreedemo01(
   id 
varchar ( 50 primary   key ,
   pid 
varchar ( 50 ),
   name 
varchar ( 50 ),
   url  
varchar ( 50 ),
   title 
varchar ( 50 ),
   target 
varchar ( 50 ),
   icon 
varchar ( 50 ),
   iconopen 
varchar ( 50 ),
   opened 
varchar ( 50 )
);


insert   into  dtreedemo01  values ( ' 0 ' , ' -1 ' , ' Root ' , ' javascript: void(0); ' , null , null , NULL , NULL , NULL );
insert   into  dtreedemo01  values ( ' 00 ' , ' 0 ' , ' 音乐 ' , ' javascript: void(0); ' , null , null , NULL , NULL , NULL );
insert   into  dtreedemo01  values ( ' 0001 ' , ' 00 ' , ' 轻金属 ' , null , null , null , NULL , NULL , NULL );
insert   into  dtreedemo01  values ( ' 0002 ' , ' 00 ' , ' 重金属 ' , null , null , null , NULL , NULL , NULL );
insert   into  dtreedemo01  values ( ' 0003 ' , ' 00 ' , ' R&B ' , null , null , null , NULL , NULL , NULL );
insert   into  dtreedemo01  values ( ' 01 ' , ' 0 ' , ' 体育 ' , ' javascript: void(0); ' , null , null , NULL , NULL , NULL );
insert   into  dtreedemo01  values ( ' 0101 ' , ' 01 ' , ' 篮球 ' , null , null , null , NULL , NULL , NULL );
insert   into  dtreedemo01  values ( ' 0102 ' , ' 01 ' , ' 足球 ' , null , null , null , NULL , NULL , NULL );
insert   into  dtreedemo01  values ( ' 0103 ' , ' 01 ' , ' 体操 ' , null , null , null , NULL , NULL , NULL );
insert   into  dtreedemo01  values ( ' 02 ' , ' 0 ' , ' 美食 ' , ' javascript: void(0); ' , null , null , NULL , NULL , NULL );
insert   into  dtreedemo01  values ( ' 0201 ' , ' 02 ' , ' 中国菜 ' , null , null , null , NULL , NULL , NULL );
insert   into  dtreedemo01  values ( ' 020101 ' , ' 0201 ' , ' 青椒找肉 ' , null , null , null , NULL , NULL , NULL );
insert   into  dtreedemo01  values ( ' 0202 ' , ' 02 ' , ' 日本菜 ' , null , null , null , NULL , NULL , NULL );
insert   into  dtreedemo01  values ( ' 020201 ' , ' 0202 ' , ' 河夫烤鱼 ' , null , null , null , NULL , NULL , NULL );
insert   into  dtreedemo01  values ( ' 0203 ' , ' 02 ' , ' 法国菜 ' , null , null , null , NULL , NULL , NULL );
insert   into  dtreedemo01  values ( ' 020301 ' , ' 0203 ' , ' 爆炒蜗牛 ' , null , null , null , NULL , NULL , NULL );

接下来就是三个框架的整合了,因为此文只是介绍一下Dtree的使用,所以整合的细节就不说了,直接看展示页面的代码.
<% @ page language = " java "  import = " java.util.* "  pageEncoding = " gbk " %>
<% @taglib prefix = " s "  uri = " /struts-tags " %>
< html >
    
< head >
        
< title > DynaTreeDemo </ title >
        
< link  rel ="StyleSheet"  href ="css/dtree.css"  type ="text/css"   />
        
< script  type ="text/javascript"  src ="js/dtree.js" ></ script >
    
</ head >
    
< body >
        
< table  width ="180" >
            
< tr >
                
< td  height ="300"  valign ="top" >
                    
                    
< script  type ="text/javascript" >
                            tree 
=   new  dTree('tree');
                        tree.config.folderLinks
= false ;
                        tree.config.useCookies
= false ;
                         
< s:iterator value = " #request.treeList " >
                        tree.add(
" <s:property  value= " id " /> " ,
                            
" <s:property  value= " pid "  /> " ,
                            
" <s:property  value= " name "  /> " ,
                            
" <s:property  value= " url "  /> " ,
                            
" <s:property  value= " title "  /> " ,
                            
" <s:property  value= " targer "  /> " ,
                            
" <s:property  value= " icon "  /> " );
                         
</ s:iterator >
                          document.write(tree);    
                        
</ script >

                
</ td >
            
</ tr >
        
</ table >
    
</ body >
</ html >
上文中的treeList为在后端控制器获取到的数据,在JSP页面中使用Struts2标签迭代集合实现javascript与S2的交互。
效果如图:

这种实现方法的一个缺点是,当有大量的数据时也是一次性查询出来传递到Dtree封装好的递归方法中,影响效率.
去除了S2SH的Jar,下载地址: http://www.blogjava.net/Files/Mars/dtreedemo.rar

转载于:https://www.cnblogs.com/BruceLeey/archive/2009/05/29/1495425.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值