easyui tree 对节点进行添加、修改、删除操作。

1. Tree的初始化

           由页面静态加载的,大家都知道了,easyui API也有,我就不再赘述了,这里主要是怎么通过ajax后台请求数据,并生成tree。

        我们一般都是会配合一个登录系统来实现,用户登录之后会出现tree的页面,在页面初始化的时候加载tree,就需要onload时间来实现,或者使用jQuery的$(function (){});也能实现。

        代码如下:

  1. $( function () {
  2. // 登录成功提示
  3. $.messager.show({
  4. title : '提示',
  5. msg : "登录成功"
  6. });
  7. // 一下添加tree代码
  8.  });

这样当页面元素加载完成就会调用function,这时在里面加上tree的加载就行。


(1). 树的请求数据       

  1. // 实例化树菜单
  2. $( "#tree").tree({
  3. url: 'getNodesById.do?id=1', // 请求路径
  4. onLoadSuccess: function(node,data){ // 成功加载树之后的操作
  5. var tree = $( this);
  6. if(data){
  7. $(data).each( function(index,d) { // 遍历生成节点
  8. if ( this.state== 'closed') {
  9. tree.tree( 'expandAll');
  10. }
  11. });
  12. }
  13. }
  14. });

上面的代码就是简单的加载tree的方法,其中url就是请求路径,在这里会根据url去同后台进行交互,后台只要组装好数据,response后前天就行。


(2)   后台请求并组装json数据       Java代码实现如下;
  1. /**
  2. * 初始化所有的树形节点
  3. * @throws UnsupportedEncodingException
  4. */
  5. @RequestMapping(value= "/getNodesById")
  6. public void getNodesById(@RequestParam int id ,HttpServletRequest request,HttpServletResponse response) throws UnsupportedEncodingException{
  7. request.setCharacterEncoding( "utf-8");
  8. response.setCharacterEncoding( "utf-8");
  9. System.out.println( "kaishi");
  10. String str = "";
  11. StringBuilder json = new StringBuilder();
  12. // 获得根节点
  13. Tree treeRoot = treeService.getNodeById(id);
  14. // 拼接根节点
  15. json.append( "[");
  16. json.append( "{\"id\":" +String.valueOf(treeRoot.getId()));
  17. json.append( ",\"text\":\"" +treeRoot.getText() + "\"");
  18. json.append( ",\"state\":\"open\"");
  19. // 获取根节点下的所有子节点
  20. List<Tree> treeList = treeService.getNodesById(id);
  21. // 遍历子节点下的子节点
  22. if(treeList!= null && treeList.size()!= 0){
  23. json.append( ",\"children\":[");
  24. for (Tree t : treeList) {
  25. json.append( "{\"id\":" +String.valueOf(t.getId()));
  26. json.append( ",\"text\":\"" +t.getText() + "\"");
  27. json.append( ",\"state\":\"open\"");
  28. // 该节点有子节点
  29. // 设置为关闭状态,而从构造异步加载tree
  30. List<Tree> tList = treeService.getNodesById(t.getId());
  31. if(tList!= null && tList.size()!= 0){ // 存在子节点
  32. json.append( ",\"children\":[");
  33. json.append(dealJsonFormat(tList)); // 存在子节点的都放在一个工具类里面处理了
  34. json.append( "]");
  35. }
  36. json.append( "},");
  37. }
  38. str = json.toString();
  39. str = str.substring( 0, str.length()- 1);
  40. str+= "]}]";
  41. }
  42. try {
  43. System.out.println( "输出json数据"+str);
  44. response.getWriter().print(str);
  45. } catch (IOException e) {
  46. e.printStackTrace();
  47. }
  48. }
  49. /**
  50.      * 处理数据集合,将数据集合转为符合格式的json
  51.      * @param tList 参数
  52.      * @return json字符串
  53.      */
  54.      public String dealJsonFormat(List<Tree> tList){
  55.         StringBuilder json = new StringBuilder();
  56.          for (Tree tree : tList) {
  57.             json.append( "{\"id\":" +String.valueOf(tree.getId()));
  58.             json.append( ",\"text\":\"" +tree.getText() + "\"");
  59.             json.append( ",\"attributes\":\""+tree.getAttributes()+ "\"");
  60.             json.append( "},");
  61.         }
  62.         String str = json.toString();
  63.         str = str.substring( 0, str.length()- 1);
  64.         
  65.         System.out.println( "---------"+str);
  66.          return str;
  67.     }
  1. // 输出的json格式
  2. [
  3. {
  4. "id": 1,
  5. "text": "功能菜单",
  6. "state": "open",
  7. "children": [
  8. {
  9. "id": 2,
  10. "text": "北京",
  11. "state": "open",
  12. "children": [
  13. {
  14. "id": 4,
  15. "text": "北京IOP数据",
  16. "attributes": "showAreaList.do?"
  17. },
  18. {
  19. "id": 5,
  20. "text": "北京虚拟机数据",
  21. "attributes": "showAreaList.do?"
  22. }
  23. ]
  24. },
  25. {
  26. "id": 3,
  27. "text": "上海",
  28. "state": "open",
  29. "children": [
  30. {
  31. "id": 6,
  32. "text": "上海IOP数据",
  33. "attributes": "showAreaList.do?"
  34. },
  35. {
  36. "id": 7,
  37. "text": "上海虚拟机数据",
  38. "attributes": "showAreaList.do?"
  39. }
  40. ]
  41. }
  42. ]
  43. }
  44. ]
上面就是输出的json格式,这样返回到前端就可以生成tree了。


2. 节点的增删改

             这个我没有研究出来直接在添加修改时,焦点聚焦到选中的节点,使用了另外一种方法,使用easyui的dialog弹出窗来实现的,这个不要见笑了。





这样实现,就能轻易的获取节点的内容了,之后就是提交事件触发ajax请求后台数据了。

(1) 右键菜单功能

就是简单的创建一个div,这个菜单引入easyui的样式就行。这里定义id是为了方便判断选中的是添加,修改,删除中的哪一个。

html:

  1. <div id="tabsMenu" class="easyui-menu" style="width:120px;">
  2. <div name="close" id="1">添加 </div>
  3. <div name="Other" id="2">修改 </div>
  4. <div name="All" id="3">删除 </div>
  5. </div>
千万别再这里面创建onclick事件,tree里面已经提供了现成的方法。

  1. // 实例化树菜单
  2. $( "#tree").tree({
  3. url: 'getNodesById.do?id=1',
  4. onLoadSuccess: function(node,data){ // 加载树
  5. var tree = $( this);
  6. if(data){
  7. $(data).each( function(index,d) {
  8. if ( this.state== 'closed') {
  9. tree.tree( 'expandAll');
  10. }
  11. });
  12. }
  13. }
  14. onContextMenu: function(e,node){ // 生成右键菜单
  15. e.preventDefault();
  16. $( this).tree( 'select',node.target);
  17. $( '#tabsMenu').menu( 'show',{
  18. left: e.pageX,
  19. top: e.pageY
  20. });
  21. $( '#tabsMenu').menu({
  22. onClick: function(item){ // 根据选择的id判断选中的是添加,修改,还是删除
  23. if(item.id== 1){ // 添加
  24. document.getElementById( "mydialog").title = "添加节点";
  25. var node = $( "#tree").tree( 'getSelected');
  26. document.getElementById( "txRolename").value = "";
  27. alert(node.text);
  28. $( '#mydialog').show(); // 弹出框显示
  29. $( '#mydialog').dialog({
  30. collapsible: true,
  31. minimizable: true,
  32. maximizable: true,
  33. buttons: [{
  34. text: '提交',
  35. iconCls: 'icon-ok',
  36. handler: function() {
  37. $.ajax({
  38. url : "addTreeNode.do",
  39. type : "post",
  40. async : false,
  41. data : "area="+$( "#txRolename").val()+ "&pid="+node.id,
  42. dataType: "json",
  43. success : function(data) {
  44. loadTree();
  45. $( '#mydialog').dialog( 'close');
  46. }
  47. });
  48. }
  49. }, {
  50. text: '取消',
  51. handler: function() {
  52. $( '#mydialog').dialog( 'close');
  53. }
  54. }]
  55. });
  56. } else if(item.id== 2){ // 修改
  57. var node = $( "#tree").tree( 'getSelected');
  58. document.getElementById( "mydialog").title = "修改节点";
  59. document.getElementById( "txRolename").value = node.text;
  60. $( '#mydialog').show();
  61. $( '#mydialog').dialog({
  62. collapsible: true,
  63. minimizable: true,
  64. maximizable: true,
  65. buttons: [{
  66. text: '提交',
  67. iconCls: 'icon-ok',
  68. handler: function() {
  69. $.ajax({
  70. url : "updTreeNode.do",
  71. type : "post",
  72. async : false,
  73. data : "area="+$( "#txRolename").val()+ "&id="+node.id,
  74. dataType: "json",
  75. success : function(data) {
  76. loadTree();
  77. $( '#mydialog').dialog( 'close');
  78. }
  79. });
  80. }
  81. }, {
  82. text: '取消',
  83. handler: function() {
  84. $( '#mydialog').dialog( 'close');
  85. }
  86. }]
  87. });
  88. } else if(item.id== 3){ // 删除
  89. var node = $( "#tree").tree( 'getSelected');
  90. $( '#mydialogtemp').show();
  91. $( '#mydialogtemp').dialog({
  92. collapsible: true,
  93. minimizable: true,
  94. maximizable: true,
  95. buttons: [{
  96. text: '提交',
  97. iconCls: 'icon-ok',
  98. handler: function() {
  99. alert( '提交数据');
  100. $.ajax({
  101. url : "delTreeNode.do",
  102. type : "post",
  103. async : false,
  104. data : "id="+node.id,
  105. dataType: "json",
  106. success : function(data) {
  107. loadTree();
  108. $( '#mydialogtemp').dialog( 'close');
  109. }
  110. });
  111. }
  112. }, {
  113. text: '取消',
  114. handler: function() {
  115. $( '#mydialog').dialog( 'close');
  116. }
  117. }]
  118. });
  119. }
  120. }
  121. });
  122. }
  123. });

这样就可以实现右键功能了,我这里顺便把增删改写上了。这点简单相信大家都能看懂,接下来的事情就是与后台交互了,这里就不在赘述了。添加,修改,删除之后,别忘记重新加载一下树。

  1. // 加载树
  2. function loadTree(){
  3. $( "#tree").tree({
  4. url: 'getNodesById.do?id=1',
  5. onLoadSuccess: function(node,data){
  6. var tree = $( this);
  7. if(data){
  8. $(data).each( function(index,d) {
  9. if ( this.state== 'closed') {
  10. tree.tree( 'expandAll');
  11. }
  12. });
  13. }
  14. }});
  15. }

3. 叶子节点点击事件

主要是使用ifream来加载一个新的页面

  1. // 实例化树菜单
  2. $("#tree").tree({
  3. url:'getNodesById.do?id=1',
  4. onLoadSuccess:function(node,data){// 加载树
  5. var tree = $(this);
  6. if(data){
  7. $(data).each(function(index,d) {
  8. if (this.state=='closed') {
  9. tree.tree('expandAll');
  10. }
  11. });
  12. }
  13. },
  14. onClick:function(node){// 添加tab
  15. if(node.attributes){
  16. node1=$("#tree").tree('getParent',node.target);
  17. openTab(node.text,node.attributes,node1.text);
  18. }
  19. }
  20. });
  21.  // 新增Tab
  22. function openTab(text,url,text1){
  23. if($("#tabs").tabs('exists',text)){
  24. $("#tabs").tabs('select',text);
  25. }else{
  26. url = url+"area="+text1;
  27. alert(url);
  28. var content=" <iframe frameborder='0' scrolling='auto' style='width:100%;height:100%' src="+url+"> </iframe>";
  29. $("#tabs").tabs('add',{
  30. title:text,
  31. closable:true,
  32. content:content
  33. });
  34. }
  35. }
  36. });

然后后台代码指向新页面,这样就会加载进去了。

前端HTML代码

  1. <%@ page language="java" pageEncoding="UTF-8"%>
  2. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
  3. <%
  4. String path = request.getContextPath();
  5. %>
  6. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  7. <html xmlns="http://www.w3.org/1999/xhtml">
  8. <head>
  9. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  10. <script src="js/jquery-easyui-1.4.1/jquery.min.js"> </script>
  11. <script src="js/jquery-easyui-1.4.1/jquery.easyui.min.js"> </script>
  12. <link href="js/jquery-easyui-1.4.1/themes/default/easyui.css" rel="stylesheet"/>
  13. <link href="js/jquery-easyui-1.4.1/themes/icon.css" rel="stylesheet" />
  14. <script src="js/jquery-easyui-1.4.1/locale/easyui-lang-zh_CN.js"> </script>
  15. <script >
  16. var node1;
  17. $( function () {
  18. // 登录成功提示
  19. $.messager.show({
  20. title : '提示',
  21. msg : "登录成功"
  22. });
  23. // 实例化树菜单
  24. $( "#tree").tree({
  25. url: 'getNodesById.do?id=1',
  26. onLoadSuccess: function(node,data){ // 加载树
  27. var tree = $( this);
  28. if(data){
  29. $(data).each( function(index,d) {
  30. if ( this.state== 'closed') {
  31. tree.tree( 'expandAll');
  32. }
  33. });
  34. }
  35. },
  36. onClick: function(node){ // 添加tab
  37. if(node.attributes){
  38. node1=$( "#tree").tree( 'getParent',node.target);
  39. openTab(node.text,node.attributes,node1.text);
  40. }
  41. },
  42. onContextMenu: function(e,node){ // 生成右键菜单
  43. e.preventDefault();
  44. $( this).tree( 'select',node.target);
  45. $( '#tabsMenu').menu( 'show',{
  46. left: e.pageX,
  47. top: e.pageY
  48. });
  49. $( '#tabsMenu').menu({
  50. onClick: function(item){
  51. if(item.id== 1){ // 添加
  52. document.getElementById( "mydialog").title = "添加节点";
  53. var node = $( "#tree").tree( 'getSelected');
  54. document.getElementById( "txRolename").value = "";
  55. alert(node.text);
  56. $( '#mydialog').show();
  57. $( '#mydialog').dialog({
  58. collapsible: true,
  59. minimizable: true,
  60. maximizable: true,
  61. buttons: [{
  62. text: '提交',
  63. iconCls: 'icon-ok',
  64. handler: function() {
  65. $.ajax({
  66. url : "addTreeNode.do",
  67. type : "post",
  68. async : false,
  69. data : "area="+$( "#txRolename").val()+ "&pid="+node.id,
  70. dataType: "json",
  71. success : function(data) {
  72. loadTree();
  73. $( '#mydialog').dialog( 'close');
  74. }
  75. });
  76. }
  77. }, {
  78. text: '取消',
  79. handler: function() {
  80. $( '#mydialog').dialog( 'close');
  81. }
  82. }]
  83. });
  84. } else if(item.id== 2){ // 修改
  85. var node = $( "#tree").tree( 'getSelected');
  86. document.getElementById( "mydialog").title = "修改节点";
  87. document.getElementById( "txRolename").value = node.text;
  88. $( '#mydialog').show();
  89. $( '#mydialog').dialog({
  90. collapsible: true,
  91. minimizable: true,
  92. maximizable: true,
  93. buttons: [{
  94. text: '提交',
  95. iconCls: 'icon-ok',
  96. handler: function() {
  97. $.ajax({
  98. url : "updTreeNode.do",
  99. type : "post",
  100. async : false,
  101. data : "area="+$( "#txRolename").val()+ "&id="+node.id,
  102. dataType: "json",
  103. success : function(data) {
  104. loadTree();
  105. $( '#mydialog').dialog( 'close');
  106. }
  107. });
  108. }
  109. }, {
  110. text: '取消',
  111. handler: function() {
  112. $( '#mydialog').dialog( 'close');
  113. }
  114. }]
  115. });
  116. } else if(item.id== 3){ // 删除
  117. var node = $( "#tree").tree( 'getSelected');
  118. $( '#mydialogtemp').show();
  119. $( '#mydialogtemp').dialog({
  120. collapsible: true,
  121. minimizable: true,
  122. maximizable: true,
  123. buttons: [{
  124. text: '提交',
  125. iconCls: 'icon-ok',
  126. handler: function() {
  127. alert( '提交数据');
  128. $.ajax({
  129. url : "delTreeNode.do",
  130. type : "post",
  131. async : false,
  132. data : "id="+node.id,
  133. dataType: "json",
  134. success : function(data) {
  135. loadTree();
  136. $( '#mydialogtemp').dialog( 'close');
  137. }
  138. });
  139. }
  140. }, {
  141. text: '取消',
  142. handler: function() {
  143. $( '#mydialog').dialog( 'close');
  144. }
  145. }]
  146. });
  147. }
  148. }
  149. });
  150. }
  151. });
  152. // 加载树
  153. function loadTree(){
  154. $( "#tree").tree({
  155. url: 'getNodesById.do?id=1',
  156. onLoadSuccess: function(node,data){
  157. var tree = $( this);
  158. if(data){
  159. $(data).each( function(index,d) {
  160. if ( this.state== 'closed') {
  161. tree.tree( 'expandAll');
  162. }
  163. });
  164. }
  165. }});
  166. }
  167. // 新增Tab
  168. function openTab(text,url,text1){
  169. if($( "#tabs").tabs( 'exists',text)){
  170. $( "#tabs").tabs( 'select',text);
  171. } else{
  172. url = url+ "area="+text1;
  173. alert(url);
  174. var content= "<iframe frameborder='0' scrolling='auto' style='width:100%;height:100%' src="+url+ "></iframe>";
  175. $( "#tabs").tabs( 'add',{
  176. title:text,
  177. closable: true,
  178. content:content
  179. });
  180. }
  181. }
  182. });
  183. // 注销系统
  184. function getOut(){
  185. window.location.href = "<%=path%>/getOut.do";
  186. }
  187. </script>
  188. <style>
  189. article, aside, figure, footer, header, hgroup,
  190. menu, nav, section { display: block; }
  191. .west{
  192. width: 200px;
  193. padding: 10px;
  194. }
  195. .north{
  196. height: 75px;
  197. }
  198. .south{
  199. height: 50px;
  200. }
  201. </style>
  202. </head>
  203. <body class="easyui-layout">
  204. <div region="north" class="north" style="background:url('image/autelan.png') no-repeat;">
  205. <div style="float:right;font-size: 15px;height:60px;text-align: center;padding-right: 20px;padding-bottom: 10px;">
  206. 欢迎 <span style="color:red">${sessionScope.user.username} </span>登陆
  207. <a href="#" onclick="getOut()">
  208. <img src="image/exit.png"/>注销 </a>
  209. <a href="javascript:history.go(-1);">
  210. <img src="image/nav_back.gif" />后退 </a>
  211. <a href="javascript:history.go(1);">
  212. <img src="image/nav_forward.gif" />前进
  213. </a>
  214. </div>
  215. </div>
  216. <div region="center" title="数据管理">
  217. <div class="easyui-tabs" fit="true" border="false" id="tabs">
  218. </div>
  219. </div>
  220. <div region="west" class="west" title="导航菜单">
  221. <ul id="tree"> </ul>
  222. </div>
  223. <div region="south" class="south" style="text-align: center">
  224. 版权所有@-----------------------翻版必究
  225. </div>
  226. <div id="tabsMenu" class="easyui-menu" style="width:120px;">
  227. <div name="close" id="1">添加 </div>
  228. <div name="Other" id="2">修改 </div>
  229. <div name="All" id="3">删除 </div>
  230. </div>
  231. <div id="mydialog" style="display:none;padding:5px;width:400px;height:100px;">
  232. <label class="lbInfo">节点名称: </label>
  233. <input id="txRolename" type="text" class="easyui-validatebox" required="true" /> <br />
  234. </div>
  235. <div id="mydialogtemp" style="display:none;padding:5px;width:400px;height:100px;" title="删除节点">
  236. 你确定要删除该节点?删除的同时会将该节点下的所有子节点删除!
  237. </div>
  238. </body>
  239. </html>

后台Java代码

  1. package com.chenqk.springmvc.controller;
  2. import java.io.IOException;
  3. import java.io.UnsupportedEncodingException;
  4. import java.util.List;
  5. import javax.servlet.http.HttpServletRequest;
  6. import javax.servlet.http.HttpServletResponse;
  7. import org.apache.log4j.Logger;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.beans.factory.annotation.Qualifier;
  10. import org.springframework.stereotype.Controller;
  11. import org.springframework.web.bind.annotation.RequestMapping;
  12. import org.springframework.web.bind.annotation.RequestParam;
  13. import com.chenqk.springmvc.service.TreeService;
  14. import com.chenqk.springmvc.entity.Tree;
  15. /**
  16. * 控制类
  17. * @author chenqk
  18. *
  19. */
  20. @Controller
  21. @RequestMapping( "/")
  22. public class TreeController{
  23. @Autowired
  24. @Qualifier( "TreeService")
  25. private TreeService treeService;
  26. private static Logger logger = Logger.getLogger(TreeController.class);
  27. /**
  28. * 初始化所有的树形节点
  29. * @throws UnsupportedEncodingException
  30. */
  31. @RequestMapping(value= "/getNodesById")
  32. public void getNodesById(@RequestParam int id ,HttpServletRequest request,HttpServletResponse response) throws UnsupportedEncodingException{
  33. request.setCharacterEncoding( "utf-8");
  34. response.setCharacterEncoding( "utf-8");
  35. System.out.println( "kaishi");
  36. String str = "";
  37. StringBuilder json = new StringBuilder();
  38. // 获得根节点
  39. Tree treeRoot = treeService.getNodeById(id);
  40. // 拼接根节点
  41. json.append( "[");
  42. json.append( "{\"id\":" +String.valueOf(treeRoot.getId()));
  43. json.append( ",\"text\":\"" +treeRoot.getText() + "\"");
  44. json.append( ",\"state\":\"open\"");
  45. // 获取根节点下的所有子节点
  46. List<Tree> treeList = treeService.getNodesById(id);
  47. // 遍历子节点下的子节点
  48. if(treeList!= null && treeList.size()!= 0){
  49. json.append( ",\"children\":[");
  50. for (Tree t : treeList) {
  51. json.append( "{\"id\":" +String.valueOf(t.getId()));
  52. json.append( ",\"text\":\"" +t.getText() + "\"");
  53. json.append( ",\"state\":\"open\"");
  54. // 该节点有子节点
  55. // 设置为关闭状态,而从构造异步加载tree
  56. List<Tree> tList = treeService.getNodesById(t.getId());
  57. if(tList!= null && tList.size()!= 0){ // 存在子节点
  58. json.append( ",\"children\":[");
  59. json.append(dealJsonFormat(tList)); // 存在子节点的都放在一个工具类里面处理了
  60. json.append( "]");
  61. }
  62. json.append( "},");
  63. }
  64. str = json.toString();
  65. str = str.substring( 0, str.length()- 1);
  66. str+= "]}]";
  67. }
  68. try {
  69. System.out.println( "输出json数据"+str);
  70. response.getWriter().print(str);
  71. } catch (IOException e) {
  72. e.printStackTrace();
  73. }
  74. }
  75. /**
  76. * 添加新节点
  77. * @param area 节点名称
  78. * @param pid 父节点id
  79. * @param request
  80. * @param response
  81. */
  82. @RequestMapping(value= "/addTreeNode")
  83. public void addTreeNode(@RequestParam String area,String pid,HttpServletRequest request,HttpServletResponse response){
  84. System.out.println( "area="+area+ ",pid="+pid);
  85. Tree tree = new Tree();
  86. tree.setPid(Integer.parseInt(pid));
  87. tree.setText(area);
  88. tree.setAttributes( "showAreaList.do?");
  89. treeService.addTreeNode(tree);
  90. try {
  91. this.getNodesById( 1, request, response);
  92. } catch (IOException e) {
  93. e.printStackTrace();
  94. }
  95. }
  96. /**
  97. * 修改节点名称
  98. * @param area 节点名称
  99. * @param id 节点id
  100. * @param request
  101. * @param response
  102. */
  103. @RequestMapping(value= "/updTreeNode")
  104. public void updTreeNode(@RequestParam String area,String id,HttpServletRequest request,HttpServletResponse response){
  105. Tree tree = new Tree();
  106. tree.setId(Integer.parseInt(id));
  107. tree.setText(area);
  108. treeService.updTreeNode(tree);
  109. try {
  110. this.getNodesById( 1, request, response);
  111. } catch (IOException e) {
  112. e.printStackTrace();
  113. }
  114. }
  115. /**
  116. * 删除节点
  117. * @param id 节点id
  118. * @param pid
  119. * @param request
  120. * @param response
  121. */
  122. @RequestMapping(value= "/delTreeNode")
  123. public void delTreeNode(@RequestParam String id,HttpServletRequest request,HttpServletResponse response){
  124. treeService.delTreeNode(Integer.parseInt(id));
  125. try {
  126. this.getNodesById( 1, request, response);
  127. } catch (IOException e) {
  128. e.printStackTrace();
  129. }
  130. }
  131. /**
  132. * 处理数据集合,将数据集合转为符合格式的json
  133. * @param tList 参数
  134. * @return json字符串
  135. */
  136. public String dealJsonFormat(List<Tree> tList){
  137. StringBuilder json = new StringBuilder();
  138. for (Tree tree : tList) {
  139. json.append( "{\"id\":" +String.valueOf(tree.getId()));
  140. json.append( ",\"text\":\"" +tree.getText() + "\"");
  141. json.append( ",\"attributes\":\""+tree.getAttributes()+ "\"");
  142. json.append( "},");
  143. }
  144. String str = json.toString();
  145. str = str.substring( 0, str.length()- 1);
  146. System.out.println( "---------"+str);
  147. return str;
  148. }
  149. public TreeService getTreeService() {
  150. return treeService;
  151. }
  152. public void setTreeService(TreeService treeService) {
  153. this.treeService = treeService;
  154. }
  155. }
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值