代码片段:
Java代码 /** * 构建树型菜单数据 */ public List<SelectTree> buildNode(int pid,List<YcChannel> channels){ List<SelectTree> result = new ArrayList<SelectTree>(); for(YcChannel chl:channels){ SelectTree node = new SelectTree(); if(null != chl.getParentId() && chl.getParentId().equals(pid)){ node.setId(chl.getChannelId()); node.setName(chl.getName()); List<SelectTree> children = buildNode(chl.getChannelId(),channels); if(null != children && 0 < children.size()){ node.setChild(children); } result.add(node); } } return result; } public String queryChannelList() { ycChannelList = this.channelSer.queryChannelList(); List<SelectTree> trees = new ArrayList<SelectTree>(); for(YcChannel yc:ycChannelList){ if(null == yc.getParentId()){ SelectTree t = new SelectTree(); t.setId(yc.getChannelId()); t.setName(yc.getName()); t.setChild(buildNode(t.getId(),ycChannelList)); trees.add(t); } } this.setAjaxData(trees); return AJAX_DATA; } /** * 构建树型菜单数据 */ public List<SelectTree> buildNode(int pid,List<YcChannel> channels){ List<SelectTree> result = new ArrayList<SelectTree>(); for(YcChannel chl:channels){ SelectTree node = new SelectTree(); if(null != chl.getParentId() && chl.getParentId().equals(pid)){ node.setId(chl.getChannelId()); node.setName(chl.getName()); List<SelectTree> children = buildNode(chl.getChannelId(),channels); if(null != children && 0 < children.size()){ node.setChild(children); } result.add(node); } } return result; } public String queryChannelList() { ycChannelList = this.channelSer.queryChannelList(); List<SelectTree> trees = new ArrayList<SelectTree>(); for(YcChannel yc:ycChannelList){ if(null == yc.getParentId()){ SelectTree t = new SelectTree(); t.setId(yc.getChannelId()); t.setName(yc.getName()); t.setChild(buildNode(t.getId(),ycChannelList)); trees.add(t); } } this.setAjaxData(trees); return AJAX_DATA; }前端JS代码:
Js代码 //recursive tree node function buildNode(len,data){ var prefix = "|"; for(var i=0;i<len;i++){ prefix += "-"; } $.each(data,function(i,item){ if(0 < item.child.length){ $('#typeid').append("<option value="+item.id +">" + prefix + item.name + "</option>"); buildNode(len+1,item.child); }else{ $('#typeid').append("<option value="+item.id +">" + prefix + item.name + "</option>"); } }); } $.ajax({ url:'${base}/channel/channelAction!queryChannelList.action', type:'GET', dataType:'json', contentType:'application/json', success:function(json){ if(json.success){ $('#typeid').empty(); $('#typeid').append("<option value='0'>请选择栏目...</option>"); $.each(json.data,function(i,item){ if(null == item.parentId){ $('#typeid').append("<option value="+item.id +">" + item.name + "</option>"); buildNode(1,item.child); } }); } }, error:function(){ alert("加载栏目出错!"); } }); });转载于:https://www.cnblogs.com/liyuxin/archive/2011/07/09/2101855.html