Following things are required :
JS : jquery.js, jquery.jstree.js, jquery.cookie.js, jquery.hotkeys.js
JAR : json-1.0.0.jar.
Index.jsp
<%-- Document : index Created on : Feb 26, 2011, 12:19:10 PM Author : TaherT --%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JQuery Tree</title> <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/jquery.jstree.js"></script> <script type="text/javascript" src="js/jquery.cookie.js"></script> <script type="text/javascript" src="js/jquery.hotkeys.js"></script> </head> <body> <div id="treeMsg" style="width: 50%;display:none" align="center"></div> <div id="jsTreeComponent" class="demo" style="width: 50%"></div> <script> $(function () { $("#jsTreeComponent").jstree({ "json_data" : { "ajax" : { "url" : '<%=request.getContextPath()%>/GetJSON' } }, "themes" : { "theme" : "apple", "dots" : true, "icons" : true }, "plugins" : [ "themes", "json_data", "ui","checkbox" ] }); $("#jsTreeComponent").bind("select_node.jstree", function (e, data) { }); }); </script> </body> </html>
DataClass.java
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package taher.jquery.tree; import java.util.ArrayList; import java.util.List; /** * * @author TaherT */ public class DataClass { List<Technology> techList = new ArrayList<Technology>(); public List<Technology> getTechList() { if(techList.isEmpty()){ techList.add(new Technology(1, 0,"Java")); techList.add(new Technology(0, 1,"J2SE")); techList.add(new Technology(0, 1,"J2EE")); techList.add(new Technology(0, 1,"J2ME")); techList.add(new Technology(1, 0,".NET")); techList.add(new Technology(0, 1,"Sliverlight")); techList.add(new Technology(1, 0,"PHP")); techList.add(new Technology(0, 1,"Zend")); techList.add(new Technology(0, 1,"Cake")); } return techList; } public void setTechList(List<Technology> techList) { this.techList = techList; } class Technology { private int Id; private int pId; private String techName; public int getId() { return Id; } public void setId(int Id) { this.Id = Id; } public int getpId() { return pId; } public void setpId(int pId) { this.pId = pId; } public String getTechName() { return techName; } public void setTechName(String techName) { this.techName = techName; } public Technology(int Id, int pId, String techName) { this.Id = Id; this.pId = pId; this.techName = techName; } } }
GetJSON.java is servlet which returns the JSON string
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package taher.jquery.tree; import java.io.IOException; import java.io.PrintWriter; import java.util.List; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.json.JSONArray; import org.json.JSONObject; /** * * @author TaherT */ @WebServlet(name = "GetJSON", urlPatterns = {"/GetJSON"}) public class GetJSON extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { DataClass dataClass = new DataClass(); List<DataClass.Technology> listCPV = dataClass.getTechList(); JSONArray jSONArray = new JSONArray(); for(int i=0; i<listCPV.size();){ JSONObject jSONObject = new JSONObject(); jSONObject.put("state","open"); jSONObject.put("data",listCPV.get(i).getTechName()); JSONObject jsonAttr = new JSONObject(); jsonAttr.put("techname", listCPV.get(i).getTechName()); jSONObject.put("attr", jsonAttr); jsonAttr = null; if(listCPV.get(i+1).getId()==0){ JSONArray jsonChildarray = new JSONArray(); while(listCPV.get(i+1).getId()==0){ i++; JSONObject child = new JSONObject(); child.put("data",listCPV.get(i).getTechName()); JSONObject jsonChildAttr = new JSONObject(); jsonChildAttr.put("techname", listCPV.get(i).getTechName()); child.put("attr", jsonChildAttr); jsonChildAttr = null; jsonChildarray.put(child); child=null; if(listCPV.size()==(i+1)){ break; } } jSONObject.put("children", jsonChildarray); jSONArray.put(jSONObject); jSONObject=null; } i++; } System.out.println(jSONArray); out.print(jSONArray); jSONArray=null; }catch(Exception e){ System.out.println(e); } finally { out.close(); } } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } @Override public String getServletInfo() { return "Short description"; } }
i just want to do same thing along with lazy loading means on click of parent node only , hit the controller and reterive the child’s and so on.
Mohit,
You can do that with JQuery Tree but you have to put your own logic in it š
How would you alter the servlet to allow nested items in the tree?
Thanks so much for your article. It’s amazing!!!
Hi,
Can you provide me all the js files (jquery.js, jquery.jstree.js, jquery.cookie.js, jquery.hotkeys.js)those you have used to implement the application. Because when i am trying to use anther one js files it through some errors like ‘default is already defined’.
Can you give me the demo file? i can’t test it…
i tested but tree is not displaying
can you tel me what might be the problem
Thank you so much…its helpull ..i tested it working perfectly
sir i have downloaded code but i need pluginn files to attach source