码迷,mamicode.com
首页 > 其他好文 > 详细

值栈的小应用

时间:2016-05-09 18:16:11      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:

在学习的一个项目中,用到了zTree的插件,通过运用这个插件可以实现添加菜单的子栏目等功能,便于后台的管理,在一次性加载树列表的时候,在js中通过$post方式提交到后台action进行处理,在action方法中需要返回一个从表中查询出来的list,这时候使用JSONobject就不能够将list传到回调函数中了,因为JSONObject中不能够接受list类型参数,后来苦苦的调试当中发现,将list通过ActionContext.getContext().getValueStack().getRoot().push(list);方式放入值栈栈顶,在后台的回调函数中的data就直接可以拿到list数据,并且是不用通过data.list获取,这种方式在我看来好像很神奇的样子,当运行成功时,那么回调函数中就会直接去值栈中查找自己所需要的数据,这种查找直接从栈顶开始查起,所以放在栈顶的元素就直接会被读取,当然这也只是一种可能,具体的还要再做细究之后再来描述,上几段代码先吧:

public String getAllMenuitem() throws IOException{
		System.out.println("通过getAllMenuitem");
		this.menuitemlist = this.menuitemService.getAllMenuitem();
		ActionContext.getContext().getValueStack().getRoot().push(menuitemlist);	
		
		return "success";
	}

 以下是js代码:

var tree = {
	setting:{
		isSimpleData: true,
		treeNodeKey: "mid",
		treeNodeParentKey: "pid",
		showLine: true,
		root:{ 
			isRoot:true,
			nodes:[]
		},
      callback:{
    	  expand:function(){
      
    	alert("aaa");  
    	  }
      }
	},
	/**
	 * 1、回调函数是由服务器端触发的,什么时候执行由服务器决定
	 * 2、回调函数是由jQuery内核调用的
	 * 3、客户端存在两个线程
	 * 4、如果在js代码中,有一些代码要用到回调函数中的数据,那么这些代码必须放在回调函数中
	 */
	loadTree:function(){
		$.post("menuitem/Menuitem_getAllMenuitem.action",null,function(data){
			alert(data);//可以读取数据
			alert(data.menuitemlist);//没有定义
			$("#tree").zTree(tree.setting,data);//加载树列表
		});
	}	
};
$().ready(function(){
	tree.loadTree();
});

 ,这个可以一次性加载树列表,

 

值栈的小应用

标签:

原文地址:http://www.cnblogs.com/AsherBlog/p/5474661.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!