EXT JS 异步动态树服务端加载 Ext.tree.TreeLoader异步服务端加载

Ext js的动态树,网上百度了一大片,都只是加载本地文件,此处不再说明,我这里使用spring mvc.

<------由于工程里还有其他代码,所以只贴tree相关代码------>

先贴layout js代码

var loader=new Ext.tree.TreeLoader({
		url:"/tree.do"
	});
	var root=new Ext.tree.AsyncTreeNode({
		id:'0',
		expanded:true,
		loader:loader
	});
	var tree=new Ext.tree.TreePanel({
		split: true,
		useArrows: true,
		rootVisible: false,
		animate : true, // 开启动画效果
		enableDD : false, // 不允许子节点拖动
		border : false, // 没有边框
		width: 210,
		margins:'3 0 3 3',
		lines:false,
        root:root
	});
后端controller代码:

@RequestMapping(value="/tree.do")
	public void tree (String node,HttpServletRequest request, HttpServletResponse response) throws Exception{
		HttpSession session=request.getSession();
		System.out.println("中国人"+(String)session.getAttribute("uname"));
		List <ResourceVO> resource=proManagerSVC.searchResource((String)session.getAttribute("uname"));
		String json="";
		if("0".equals(node)){
			for (ResourceVO resourceVO : resource) {
					//是管理员时,拥有两种权限 父目录 ID 为1
					if("RO20001".equals(resourceVO.getRoleid())){
						if("1".equals(resourceVO.getReslevel())){
							json+="[{id:1,cls:'forum-ct',expanded : true,text:'"+resourceVO.getResnm()+"',leaf:false}";
						}
						else if("2".equals(resourceVO.getReslevel()))
						json+=",{id:2,cls:'forum-ct',text:'"+resourceVO.getResnm()+"',leaf:false}]";
					}
					//普通用户时,只有购买权限 父目录 ID 为2
					else if("RO20002".equals(resourceVO.getRoleid())){
						if("2".equals(resourceVO.getReslevel())){
							json+="[{id:2,cls:'forum-ct',text:'"+resourceVO.getResnm()+"',leaf:false}]";
						}
					}
					//manager时,只有查询权限 父目录 ID 为3
					else if("RO20003".equals(resourceVO.getRoleid())){
						if("1".equals(resourceVO.getReslevel())){
							json+="[{id:3,cls:'forum-ct',text:'"+resourceVO.getResnm()+"',leaf:false}]";
						}
					}
			}
		}
		else if("1".equals(node)){
			for (ResourceVO resourceVO1 : resource) {
				if("11".equals(resourceVO1.getReslevel())){
					json+="[{id:11,icon:'images/forum.gif',text:'"+resourceVO1.getResnm()+"',leaf:true,href:'"+resourceVO1.getResurl()+"',hrefTarget:'frm0'}";
				}
				else if("12".equals(resourceVO1.getReslevel())){
					json+=",{id:12,icon:'images/forum.gif',text:'"+resourceVO1.getResnm()+"',leaf:true,href:'"+resourceVO1.getResurl()+"',hrefTarget:'frm0'}]";
				}
			}
		}
		else if("2".equals(node)){
			for (ResourceVO resourceVO1 : resource) {
				if("21".equals(resourceVO1.getReslevel())){
					json+="[{id:21,icon:'images/forum.gif',text:'"+resourceVO1.getResnm()+"',leaf:true,href:'"+resourceVO1.getResurl()+"',hrefTarget:'frm0'}]";
				}
			}
		}
		else if("3".equals(node)){
			for (ResourceVO resourceVO1 : resource) {
				if("12".equals(resourceVO1.getReslevel())){
					json+="[{id:31,icon:'images/forum.gif',text:'"+resourceVO1.getResnm()+"',leaf:true,href:'"+resourceVO1.getResurl()+"',hrefTarget:'frm0'}]";
				}
			}
		}
		response.setContentType("text/json;charset=utf-8");
		PrintWriter out = response.getWriter();
		out.print(json);
		out.flush();
		out.close();
	}

Controller代码比较不好理解,而且也很不好写,这个是异步动态加载!有问题可以留言奥!

而且我这里有用到点击tree的node后会自动在frame name为frm0的打开页面。

ResourceVO里会获取如下table信息(当然只是部分):

最终效果:


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值