ZTree+Struts2+ajax+json實現checkbox權限樹

zTree的插件可以在網上下載:http://www.ztree.me/v3/main.php#_zTreeInfo

參考了一些資料後,寫的一個權限樹(直接上代碼):

1、JSP:

  1. <%@ page language="java" import="java.util.*" 
  2.     contentType="text/html; charset=gb2312" errorPage=""%> 
  3. <%@ page import="com.whu.model.baseinfo.*"%> 
  4. <%@ taglib uri="/struts-tags" prefix="s"%> 
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
  6. <html> 
  7.     <head> 
  8.         <title>CheckTree v 0.2 by JJ Geewax</title> 
  9.  
  10.         <link rel="stylesheet" href="../js/JQuery zTree v3.3/css/demo.css" 
  11.             type="text/css" /> 
  12.         <link rel="stylesheet" 
  13.             href="../js/JQuery zTree v3.3/css/zTreeStyle/zTreeStyle.css" 
  14.             type="text/css" /> 
  15.  
  16.         <script type="text/javascript" 
  17.             src="../js/JQuery zTree v3.3/js/jquery-1.4.4.min.js"> 
  18. </script> 
  19.         <script type="text/javascript" 
  20.             src="../js/JQuery zTree v3.3/js/jquery.ztree.core-3.3.js"> 
  21. </script> 
  22.         <script type="text/javascript" 
  23.             src="../js/JQuery zTree v3.3/js/jquery.ztree.excheck-3.3.js"> 
  24. </script> 
  25.  
  26.  
  27.         <script type="text/javascript"> 
  28. var zTreeObj; 
  29. var setting = { 
  30.     check : { 
  31.         enable : true 
  32.     }, 
  33.     data : { 
  34.         simpleData : { 
  35.             enable : true 
  36.         } 
  37.     } 
  38. }; 
  39.  
  40. $(document).ready(function() { 
  41.     $.ajax( { 
  42.         url : "../systemManage/permTreeAction.action", 
  43.         type : "get", 
  44.         dataType : "json", 
  45.         success : initZtree 
  46.     }); 
  47. }); 
  48.  
  49. function initZtree(json) { 
  50.     var data = (json.permString); 
  51.     var zNodes = eval("(" + data + ")"); 
  52.     zTreeObj = $.fn.zTree.init($('#kpiTree'), setting, zNodes); 
  53.  
  54. function submitCheckedNodes(treeNode) { 
  55.     var nodes = new Array(); 
  56.     //取得選中的結點 
  57.     nodes = zTreeObj.getCheckedNodes(true); 
  58.     var str = ""
  59.     for (i = 0; i < nodes.length; i++) { 
  60.         if (str != "") { 
  61.             str += ","; 
  62.         } 
  63.         str += nodes[i].id; 
  64.     } 
  65.     alert(str); 
  66. </script> 
  67.  
  68.  
  69.     </head> 
  70.  
  71.  
  72.     <body> 
  73.         <form action="" name="checkForm" method="post"> 
  74.             <div> 
  75.                 <ul id="kpiTree" class="ztree"></ul> 
  76.             </div> 
  77.             <input type="button" value="提交" onclick="submitCheckedNodes()" /> 
  78.         </form> 
  79.     </body> 
  80. </html> 
<%@ page language="java" import="java.util.*"
	contentType="text/html; charset=gb2312" errorPage=""%>
<%@ page import="com.whu.model.baseinfo.*"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
	<head>
		<title>CheckTree v 0.2 by JJ Geewax</title>

		<link rel="stylesheet" href="../js/JQuery zTree v3.3/css/demo.css"
			type="text/css" />
		<link rel="stylesheet"
			href="../js/JQuery zTree v3.3/css/zTreeStyle/zTreeStyle.css"
			type="text/css" />

		<script type="text/javascript"
			src="../js/JQuery zTree v3.3/js/jquery-1.4.4.min.js">
</script>
		<script type="text/javascript"
			src="../js/JQuery zTree v3.3/js/jquery.ztree.core-3.3.js">
</script>
		<script type="text/javascript"
			src="../js/JQuery zTree v3.3/js/jquery.ztree.excheck-3.3.js">
</script>


		<script type="text/javascript">
var zTreeObj;
var setting = {
	check : {
		enable : true
	},
	data : {
		simpleData : {
			enable : true
		}
	}
};

$(document).ready(function() {
	$.ajax( {
		url : "../systemManage/permTreeAction.action",
		type : "get",
		dataType : "json",
		success : initZtree
	});
});

function initZtree(json) {
	var data = (json.permString);
	var zNodes = eval("(" + data + ")");
	zTreeObj = $.fn.zTree.init($('#kpiTree'), setting, zNodes);
}

function submitCheckedNodes(treeNode) {
	var nodes = new Array();
	//取得選中的結點
	nodes = zTreeObj.getCheckedNodes(true);
	var str = "";
	for (i = 0; i < nodes.length; i++) {
		if (str != "") {
			str += ",";
		}
		str += nodes[i].id;
	}
	alert(str);
}
</script>


	</head>


	<body>
		<form action="" name="checkForm" method="post">
			<div>
				<ul id="kpiTree" class="ztree"></ul>
			</div>
			<input type="button" value="提交" οnclick="submitCheckedNodes()" />
		</form>
	</body>
</html>


2、Action:

  1. package com.whu.action; 
  2.  
  3. import java.util.ArrayList; 
  4. import com.opensymphony.xwork2.ActionSupport; 
  5. import com.whu.iservice.systemmanage.impl.PermService; 
  6. import com.whu.model.baseinfo.PermModel; 
  7. public class RoleAction extends ActionSupport { 
  8.  
  9.     /**
  10.      *
  11.      */ 
  12.     private static final long serialVersionUID = 1L; 
  13.  
  14.     private IRoleService roleService = new RoleService(); 
  15.  
  16.     private String permString; 
  17.  
  18.  
  19.     public String getPermString() { 
  20.         return permString; 
  21.     } 
  22.  
  23.     public void setPermString(String permString) { 
  24.         this.permString = permString; 
  25.     } 
  26.  
  27.     public String searchPermTree() { 
  28.          
  29.         try
  30.             ArrayList<PermModel> plist = new ArrayList<PermModel>(); 
  31.             plist = (ArrayList<PermModel>) new PermService().findAllPerms();//獲取所有權限 
  32.                             //拼成 json 字符串 
  33.             StringBuilder sb = new StringBuilder(); 
  34.             int size = plist.size(); 
  35.             sb.append("["); 
  36.             for (PermModel m : plist) { 
  37.                 size--; 
  38.                 sb.append("{id:\""); 
  39.                 sb.append(m.getPermid()); 
  40.                 sb.append("\",pId:\""); 
  41.                 sb.append(m.getParentid()); 
  42.                 sb.append("\",name:\""); 
  43.                 sb.append(m.getPermname()); 
  44.                  
  45.                 if(m.hasChildren()){ 
  46.                     sb.append("\",open:\""); 
  47.                     sb.append(true); 
  48.                 }                
  49.  
  50.                 sb.append("\"}"); 
  51.                 if (size > 0) { 
  52.                     sb.append(","); 
  53.                 } 
  54.             } 
  55.             sb.append("]"); 
  56.  
  57.             this.permString = sb.toString(); 
  58.         } catch (Exception e) { 
  59.             // TODO Auto-generated catch block 50. 
  60.             e.printStackTrace(); 
  61.         } 
  62.         return SUCCESS; 
  63.  
  64.     } 
  65.  
package com.whu.action;

import java.util.ArrayList;
import com.opensymphony.xwork2.ActionSupport;
import com.whu.iservice.systemmanage.impl.PermService;
import com.whu.model.baseinfo.PermModel;
public class RoleAction extends ActionSupport {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private IRoleService roleService = new RoleService();

	private String permString;


	public String getPermString() {
		return permString;
	}

	public void setPermString(String permString) {
		this.permString = permString;
	}

	public String searchPermTree() {
		
		try {
			ArrayList<PermModel> plist = new ArrayList<PermModel>();
			plist = (ArrayList<PermModel>) new PermService().findAllPerms();//獲取所有權限
                            //拼成 json 字符串
			StringBuilder sb = new StringBuilder();
			int size = plist.size();
			sb.append("[");
			for (PermModel m : plist) {
				size--;
				sb.append("{id:\"");
				sb.append(m.getPermid());
				sb.append("\",pId:\"");
				sb.append(m.getParentid());
				sb.append("\",name:\"");
				sb.append(m.getPermname());
				
				if(m.hasChildren()){
					sb.append("\",open:\"");
					sb.append(true);
				}				

				sb.append("\"}");
				if (size > 0) {
					sb.append(",");
				}
			}
			sb.append("]");

			this.permString = sb.toString();
		} catch (Exception e) {
			// TODO Auto-generated catch block 50.
			e.printStackTrace();
		}
		return SUCCESS;

	}

}

struts.xml:

  1. <package name="sysManage" namespace="/systemManage" 
  2.     extends="struts-default,json-default"> 
  3.     <action name="permTreeAction" class="com.whu.action.RoleAction" method="searchPermTree"> 
  4.         <result type="json"></result> 
  5.     </action> 
  6.      
  7. </package> 
	<package name="sysManage" namespace="/systemManage"
		extends="struts-default,json-default">
		<action name="permTreeAction" class="com.whu.action.RoleAction" method="searchPermTree">
			<result type="json"></result>
		</action>
		
	</package>


3、如果要讓zTree初始化:

則在 拼成 json 字符串的時候,添加:

sb.append("\",checked:\"");sb.append(true);

4、效果圖:

下載代碼

發佈了22 篇原創文章 · 獲贊 5 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章