首先提供Ztree官方網站http://www.ztree.me。
Ztree是一個使用jQuery實作的JSP頁面的各種功能樹,本文介紹一個非同步取得資料到下拉樹的實作方式。
目前版本Ztree 3.5.01
simple.html
複製程式碼
程式碼
程式碼
simple.html
複製程式碼
程式碼如下:
var setting = { data: {
simpleData: {
enable: true
// idKey:"id",
// pIdKey:"pId",
}
}
,async : {
enable: true,
url:"/Java_Solr/servlet/ZTreeSerlvet",
autoParam:["id", "name"],
otherParam:{"otherParam":"zTreeAsyncTest "},
// dataType: "text",//預設text
// type:"get",//預設post
dataFilter: filter //非同步返回後經過Filter
}
,callback:{
// beforeAsync: zTreeBeforeAsync, // 非同步載入事件之前得到對應訊息
asyncSuccess: zTreeOnAsyncSuccess,///非同步載入成功的fun beforeClick:beforeClick //擷取點擊節點之前的事件回呼函數
}
};
//treeId是treeDemo
function filter(treeId, parentNode, childNodes) {
if (!childNodes) return null;
for (var i=0, l=childNodes.length; ichildNodes[i].name = childNodes[i].name. replace('','');
}
return childNodes;
}
function beforeClick(treeId,treeNode){
if(!treeNode.isParent){
alert( "請選擇父節點");
return false;
}else{
return true;
}
}
function zTreeOnAsyncError(event, treeId, tree){
alert("異步加載失敗!");
}
function zTreeOnAsyncSuccess(event, treeId, treeNode, msg){
}
/***********************當你點擊父節點是,會異步訪問servlet,把id傳過去************* ****************/
var zNodes=[];
/* var zNodes =[
{ id:1, pId:0, name:"parentNode 1", open:true},
{ id:11, pId:1 , name:"parentNode 11"},
{ id:111, pId:11, name:"leafNode 111"},
{ id:112, pId:11, name:"leafNode 112"},
{ id:113, pId:11, name:"leafNode 113"},
{ id:114, pId:11, name:"leafNode 114"},
{ id:12, pId:1 , name:"parentNode 12"},
{ id:121, pId:12, name:"leafNode 121"},
{ id:122, pId:12, name:"leafNode 122"},
{ id:123, pId:12, name:"leafNode 123"},
{ id:13, pId:1, name:"parentNode 13", isParent:true},
{ id:2 , pId:0, name:"parentNode 2", isParent:true}
]; */
$(document).ready(function(){
$.fn.zTree.init($( "#treeDemo"), setting, zNodes);
});
得到zTree物件:var zTree = $.fn.zTree.getZTreeObj("treeDemo"), ZtreeServlet
複製程式碼 程式碼如下:
包 org.hzy.servlets;
導入java.io.IOException;
導入java.io.PrintWriter;
導入java.util.ArrayList;
導入java.util.List;
導入javax.servlet.ServletException;
導入javax.servlet.http.HttpServlet;
導入javax.servlet.http.HttpServletRequest;
導入javax.servlet.http.HttpServletResponse;
導入org.hzy.bean.ZtreeBean;
導入com.alibaba.fastjson.JSON;
public class ZTreeSerlvet extends HttpServlet {
public void destroy() {
super.destroy();
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println(request.getParameter"id"" " request.getParameter("otherParam"));
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
ZtreeBean zb = new ZtreeBean(0, -1, "zb", true);
ZtreeBean zb1 = new ZtreeBean(1, 0, "zb1", true);
ZtreeBean zb2 = new ZtreeBean(2, 1, "zb2", false);
ZtreeBean zb3 = new ZtreeBean(2, 0, "zbss", true);
列表 list = new ArrayList();
list.add(zb);
list.add(zb1);
list.add(zb2);
list.add(zb3);
String str = JSON.toJSONString(list);
out.print(str);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
public void init() throws ServletException {
}
}