이전 글에서 비동기 트리 구현을 위한 jquery의 EasyUI를 소개했습니다. 이번 글에서는 동적 트리 구현을 위한 jquery easyui를 소개합니다.
먼저 해당 js 파일을 jsp 페이지에 삽입하세요
본문에 프로세스 목록을 추가하고 내일 모레 json 데이터를 접합합니다
특정 콘텐츠에 대해서는 아래 코드 세부정보를 참조하세요.
JSP 페이지에 관련 js를 소개하는 것이 바람직합니다
<link rel="stylesheet" type="text/css" href="<%=path %>/css/jquery_easyui/themes/default/easyui.css"> <link rel="stylesheet" type="text/css" href="<%=path %>/css/jquery_easyui/themes/icon.css"> <script type="text/javascript" src="<%=path %>/js/jquery_easyui/jquery-1.4.4.min.js"></script> <script type="text/javascript" src="<%=path %>/js/jquery_easyui/jquery.easyui.min.js"></script>
스크립트 추가
<script> $(function(){ $('#tt2').tree({ checkbox: false, url: '<%=path%>/formconfig/loadWfNodes.do', onBeforeExpand: function(node){ $('#tt2').tree('options').url = '<%=path%>/formconfig/loadWfNodes.do?wfId='+node.id; } }); }); </script>
본문에
추가<body> <ul id="tt2"> <li state="closed" id='0'><span>流程列表</span></li> </ul> </body>
백그라운드에서 json 데이터 접합
package com.aegon_cnooc.oa.formconfig.action; import java.io.PrintWriter; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import com.aegon_cnooc.framework.base.action.BaseAction; import com.aegon_cnooc.oa.formconfig.service.FormConfigService; import com.aegon_cnooc.oa.ibatis.to.TuOafWfTO; import com.aegon_cnooc.oa.ibatis.to.TuOafWfnodesTO; import com.aegon_cnooc.util.StringUtil; /** * 加载流程下的节点的名称 * @Author: liuxinghui * @Date: 2011-9-8 * @Version: 2.0 * @Despcrition: */ public class LoadWfNodesAction extends BaseAction{ private FormConfigService formConfigService; public ActionForward executeAction(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { String wfId=request.getParameter("wfId"); String jsonstr = "["; if(StringUtil.isNotEmpty(wfId)&&"0".equals(wfId)){ List wfList=formConfigService.findWf(); for(int i=0;i<wfList.size();i++){ TuOafWfTO wfTo=(TuOafWfTO)wfList.get(i); jsonstr=jsonstr+ "{\n" + " \"id\":"+wfTo.getWfid()+",\n" + " \"text\":\"<a href='javaScript:void(0)' target='mainFrame'>"+wfTo.getWfname()+"</a>\",\n" + " \"state\":\"closed\"\n" + " },"; } int end=jsonstr.length()-1;//去掉最后一个逗号 String json=jsonstr.substring(0,end); json=json+"]"; response.setContentType("application/json;charset=gbk"); response.setCharacterEncoding("gbk"); PrintWriter pw = response.getWriter(); pw.write(json); pw.flush(); }else{ List wfNodes=formConfigService.findWfNodesById(wfId); for(int i=0;i<wfNodes.size();i++){ TuOafWfnodesTO wfNodesTo=(TuOafWfnodesTO)wfNodes.get(i); jsonstr=jsonstr+ "{\n" + " \"id\":"+wfNodesTo.getNodeid()+",\n" + " \"text\":\"<a href='" + request.getContextPath()+ "/formconfig/loadGroupByWfIdAndNodeId.do?wfId="+wfId+"&nodeId="+wfNodesTo.getNodeid()+"' target='mainFrame'>"+wfNodesTo.getGenstepname()+"("+wfNodesTo.getNodeid()+")</a>\",\n" + " \"state\":\"closed\"\n" + " },"; } int end=jsonstr.length()-1;//去掉最后一个逗号 String json=jsonstr.substring(0,end); json=json+"]"; response.setContentType("application/json;charset=gbk"); response.setCharacterEncoding("gbk"); PrintWriter pw = response.getWriter(); pw.write(json); pw.flush(); } return null; } public void setFormConfigService(FormConfigService formConfigService) { this.formConfigService = formConfigService; } }
다음 코드는 EasyUI Jquery 동적 로딩 트리입니다. 로드할 노드를 클릭하세요.
<script type="text/javascript"> $(function() { $(document).ready(function() { $.post("./test/tree.action", {}, function(json) { $("#tt").tree({ data : json.itemsList, onClick : function(node) { $.post("./test/tree.action", { "id" : node.id }, function(json) { $('#tt').tree('append', { parent : node.target, data : json.data }); }, "json"); } }); }, "json"); }); }); </script> </head> <body> <ul id="tt"></ul> </body>