- /**
- *树形菜单VO
- */
- public class SelectTree implements Serializable{
- private int id;
- private String name;
- private List<SelectTree> child = new ArrayList<SelectTree>();
- //getter & setter ....略
- }
/** *树形菜单VO */ public class SelectTree implements Serializable{ private int id; private String name; private List<SelectTree> child = new ArrayList<SelectTree>(); //getter & setter ....略 }
代码片段:
- /**
- * 构建树型菜单数据
- */
- 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代码:
- //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("加载栏目出错!");
- }
- });
- });