bootStrap ace tree例子 JAVA版本

bootstrap是Twitter开发的开源前端框架,有着丰富的组件。通过使用这些组件,程序员可以更容易的编写好看的web网站。Ace是一个轻量,功能丰富,HTML5、响应式、支持手机及平板电脑上浏览的管理后台模板。
关于tree的使用,html文件夹下treeview.html给了静态数据的例子,examples下treeview.html给了动态PHP语言的例子。这里给的是java版本的。

html文件
[html]  view plain copy print ?
  1. <! DOCTYPE html>  
  2. < html lang ="en" >  
  3.      <head >  
  4.           < meta charset ="utf-8" />  
  5.           < title> Treeview Example </ title>  
  6.   
  7.           < link rel ="stylesheet" href ="../assets/css/bootstrap.css" />  
  8.           < link rel ="stylesheet" href ="../assets/css/font-awesome.css" />  
  9.            
  10.           <!-- fonts -->  
  11.           < link rel ="stylesheet" href ="../assets/css/ace-fonts.css" />  
  12.            
  13.            
  14.           < link rel ="stylesheet" href ="../assets/css/ace.css" />  
  15.           <!--[if lte IE 9]>  
  16.            <link rel="stylesheet " href="../assets/ css/ace-ie.css" />  
  17.          <![ endif]-->  
  18.      </head >  
  19.   
  20.      <body >  
  21.      <div class"main-container">  
  22.       <div class"page-content">  
  23.       <div class"row">  
  24.   
  25.           < div class ="center" style=" width :400px ; margin :12px ;" >  
  26.               < div class ="widget-box align-left transparent">  
  27.                   < div class ="widget-header" >  
  28.                        < h4 class ="lighter smaller"> Tree element loading data from server <br /> pre-selecting some items randomly </ h4>  
  29.                   </ div>  
  30.   
  31.                   < div class ="widget-body" >  
  32.                   < div class ="widget-main padding-8">  
  33.                        < div id"treeview" class ="tree" ></ div>  
  34.                        < div class ="hr" ></ div>  
  35.                        < button id"submit-button" type ="button" class"btn btn-sm btn-primary pull-right">  
  36.                            < i class ="ace-icon fa fa-check"></ i >  
  37.                           Submit  
  38.                        </ button>  
  39.                   </ div>  
  40.                   </ div>  
  41.               </ div>  
  42.           </ div>  
  43.   
  44.           </ div>  
  45.            
  46.            
  47.            
  48.           < div id"modal-tree-items" class = "modal" tabindex ="-1" >  
  49.           < div class ="modal-dialog" >  
  50.            < div class ="modal-content" >  
  51.   
  52.               < div class ="modal-header" >  
  53.                   < button type ="button" class ="close" data-dismiss"modal" >× </ button>  
  54.                   < h4 class ="blue bigger" > Treeview selection</ h4>  
  55.               </ div>  
  56.                
  57.               < div class ="modal-body" >  
  58.                   < div class ="row-fluid" >  
  59.                        Content can be put inside a hidden input and sent to server  
  60.                   </ div>  
  61.                    
  62.                   < div class ="space-6" ></ div>  
  63.                    
  64.                   < div class ="row-fluid" >  
  65.                        < textarea spellcheck ="false" id ="tree-value" ></ textarea>  
  66.                   </ div>  
  67.               </ div>  
  68.                
  69.               < div class ="modal-footer" >  
  70.                   < button class ="btn btn-sm" data-dismiss ="modal" >< i class ="ace-icon fa fa-times"></ i > Cancel </ button>  
  71.                   < button class ="btn btn-sm btn-primary">< i class = "ace-icon fa fa-check"></ i > OK</ button>  
  72.               </ div>  
  73.   
  74.            </ div>  
  75.           </ div>  
  76.           </ div>  
  77.            
  78.       </div >  
  79.      </div >  
  80.   
  81.   
  82.           <!-- basic scripts -->  
  83.           <!--[if !IE]> -->  
  84.           < script type ="text/javascript" >  
  85.           window.jQuery || document.write( "<script src='../assets/js/jquery.js'>"+ "<" +"/script>" );  
  86.           </ script>  
  87.           <!-- <![ endif]-->  
  88.           <!--[if IE]>  
  89.          <script type="text/ javascript">  
  90.           window.jQuery || document.write("<script src='../assets/ js/jquery-1.10.2. js'>"+"<"+"/script>");  
  91.          </script>  
  92.          <![ endif]-->  
  93.            
  94.           < script src ="../assets/js/bootstrap.js" ></ script>  
  95.            
  96.           < script src ="../assets/js/fuelux/fuelux.tree.js" ></ script>  
  97.            
  98.           <!-- ace scripts -->  
  99.           < script src ="../assets/js/ace-elements.js" ></ script>  
  100.           < script src ="../assets/js/ace.js" ></ script>  
  101.            
  102.           < script type ="text/javascript" >  
  103.              $( function () {  
  104.                   //construct the data source object to be used by tree  
  105.                   var remoteUrl = '' ;//动态树数据请求接口  
  106.                    
  107.                   var remoteDateSource = function (options, callback) {  
  108.                        var parent_id = null  
  109.                        if ( !('text' in options || 'type' in options) ){  
  110.                           parent_id = 0; //load first level data  
  111.                       }  
  112.                        else if ('type' in options && options['type' ] == 'folder' ) { //it has children  
  113.                            if ('additionalParameters' in options && 'children' inoptions.additionalParameters)  
  114.                                parent_id = options.additionalParameters['id' ]  
  115.                       }  
  116.                         
  117.                        if (parent_id !== null) {  
  118.                           $.ajax({  
  119.                                url: remoteUrl,  
  120.                                data: 'id=' +parent_id,  
  121.                                type: 'POST' ,  
  122.                                dataType: 'json' ,  
  123.                                success : function (response) {  
  124.                                     if (response.status == "OK" )  
  125.                                        callback({ data: response.data })  
  126.                                },  
  127.                                error: function (response) {  
  128.                                     //console.log(response);  
  129.                                }  
  130.                           })  
  131.                       }  
  132.                  }  
  133.   
  134.                  $( '#treeview' ).ace_tree({  
  135.                       dataSource: remoteDateSource ,  
  136.                       multiSelect: true ,  
  137.                       loadingHTML: '<div class="tree-loading"><i class="ace-icon fa fa-refresh fa-spin blue"></i></div>',  
  138.                        'open-icon' : 'ace-icon tree-minus',  
  139.                        'close-icon' : 'ace-icon tree-plus',  
  140.                        'selectable' : true ,  
  141.                        'selected-icon' : 'ace-icon fa fa-check',  
  142.                        'unselected-icon' : 'ace-icon fa fa-times',  
  143.                       cacheItems: true ,  
  144.                       folderSelect: false  
  145.                  });  
  146.                    
  147.                    
  148.                   //show selected items inside a modal  
  149.                  $( '#submit-button' ).on('click' , function () {  
  150.                        var output = '' ;  
  151.                        var items = $('#treeview' ).tree('selectedItems' );  
  152.                        for (var i in items) if (items.hasOwnProperty(i)) {  
  153.                            var item = items[i];  
  154.                           output += item.additionalParameters['id' ] + ":"+ item.text+"\n" ;  
  155.                       }  
  156.                         
  157.                      $( '#modal-tree-items' ).modal('show' );  
  158.                      $( '#tree-value' ).css({'width' :'98%' , 'height' :'200px' }).val(output);  
  159.                    
  160.                  });  
  161.                    
  162.                   if (location.protocol == 'file:' ) alert("For retrieving data from server, you should                                          access this page using a webserver.");  
  163.              });  
  164.           </ script>  
  165.   
  166.      </body >  
  167. </ html>  



数据库设计
CREATE   TABLE  city (
  id  INTEGER   PRIMARY   KEY  ,
  parent  INTEGER ,
  text TEXT
);
//这三个是最基本必须的字段,可以根据自己需要添加。


JAVA代码:
使用到的bean

  Item:
[java]  view plain copy print ?
  1. /** 
  2.  * 功能: 节点的信息 
  3.  */  
  4. public class Item  
  5. {  
  6.      /** 
  7.      * 节点的名字 
  8.      */  
  9.      private String text ;  
  10.       
  11.      /** 
  12.      * 节点的类型:"item":文件  "folder":目录 
  13.      */  
  14.      private String type ;  
  15.       
  16.      /** 
  17.      * 子节点的信息 
  18.      */  
  19.      private AdditionalParameters additionalParameters ;  
  20.   
  21.      public String getText()  
  22.     {  
  23.           return text ;  
  24.     }  
  25.   
  26.      public void setText(String text )  
  27.     {  
  28.           this .text = text;  
  29.     }  
  30.   
  31.      public String getType()  
  32.     {  
  33.           return type ;  
  34.     }  
  35.   
  36.      public void setType(String type )  
  37.     {  
  38.           this .type = type;  
  39.     }  
  40.   
  41.      public AdditionalParameters getAdditionalParameters()  
  42.     {  
  43.           return additionalParameters ;  
  44.     }  
  45.   
  46.      public void setAdditionalParameters(AdditionalParameters additionalParameters )  
  47.     {  
  48.           this .additionalParameters = additionalParameters ;  
  49.     }  
  50. }  


AdditionalParameters:

[java]  view plain copy print ?
  1. /** 
  2.  * 功能: 子节点的信息 
  3.  */  
  4. public class AdditionalParameters  
  5. {  
  6.      /** 
  7.      * 子节点列表 
  8.      */  
  9.      private List<Item> children = new ArrayList<Item>();  
  10.       
  11.      /** 
  12.      * 节点的Id 
  13.      */  
  14.      private String id;  
  15.       
  16.      /** 
  17.      * 是否有选中属性 
  18.      */  
  19.      @JsonProperty"item-selected" )  
  20.      private boolean itemSelected ;  
  21.   
  22.      public boolean isItemSelected()  
  23.     {  
  24.           return itemSelected ;  
  25.     }  
  26.   
  27.      public void setItemSelected( boolean itemSelected )  
  28.     {  
  29.           this .itemSelected = itemSelected;  
  30.     }  
  31.   
  32.      public List<Item> getChildren()  
  33.     {  
  34.           return children ;  
  35.     }  
  36.   
  37.      public void setChildren(List<Item> children )  
  38.     {  
  39.           this .children = children;  
  40.     }  
  41.   
  42.      public String getId()  
  43.     {  
  44.           return id ;  
  45.     }  
  46.   
  47.      public void setId(String id )  
  48.     {  
  49.           this .id = id;  
  50.     }  
  51.       
  52.       
  53. }  


TreeRespVO:
[java]  view plain copy print ?
  1. /** 
  2.  * 功能: 数据返回对象 
  3.  */  
  4. public class TreeRespVO  
  5. {  
  6.      private List<Item>  data = new ArrayList<Item>();  
  7.   
  8.      public List<Item> getData()  
  9.     {  
  10.           return data ;  
  11.     }  
  12.   
  13.      public void setData(List<Item> data )  
  14.     {  
  15.           this .data = data;  
  16.     }  
  17.       
  18.       
  19. }  


业务实现部分代码:
[java]  view plain copy print ?
  1. List<TreeRespVO> list = //后台根据父节点查询出的数据列表  
  2.         TreeRespVOvo = newTreeRespVO();  
  3.           List<Item> voItemList = new ArrayList<Item>();  
  4.           if (null != list && list .size() !=0)  
  5.          {  
  6.              //Tree和数据库对应的实体bean对象  
  7.               for (Tree tree : list )  
  8.              {  
  9.                   
  10.                  Item item = new Item();  
  11.                   int child_count = //根据遍历的节点,查询该节点子节点的个数。  
  12.                   item .setText(tree .getNodeName());  
  13.                   if (child_count > 0)  
  14.                  {  
  15.                        item .setType("folder" );//有子节点  
  16.                       AdditionalParameters adp = new AdditionalParameters();  
  17.                       adp .setId(knowledgeTree .getId());  
  18.                       item .setAdditionalParameters(adp );  
  19.                  }  
  20.                   else  
  21.                  {  
  22.                       AdditionalParameters adp = new AdditionalParameters();  
  23.                       adp .setId(knowledgeTree .getId());  
  24.                        adp .setItemSelected( true);  
  25.                       item .setAdditionalParameters(adp );  
  26.                        item .setType("item" );//无子节点  
  27.                  }  
  28.                   voItemList .add(item );  
  29.              }  
  30.          }  
  31.           vo.setData( voItemList );  

返回的数据格式必须是json类型的,否则js无法识别。代码只有基本的展示功能,增删改还需后续完善。学习使用中,如有错误,欢迎指正。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值