首页 > 其他 > 详细

struts2接受的easyui的tree的搜索框的乱码问题

时间:2015-11-05 16:58:48      阅读:286      评论:0      收藏:0      [点我收藏+]

功能

 在页面增加"名称"和"状态"两个搜索框,通过搜索条件来过滤tree的显示列表

原先的做法:

//通过在tree的url中添加请求参数,然后在Action接受请求参数并过滤结果集
$(‘#tree‘).tree(‘options‘).url =‘./iface/findCustomerTree?customerName=‘+searchValue+"&object.state="+$(‘#questionState‘).combobox(‘getValue‘);
$(‘#tree‘).tree(‘reload‘);

这么做的话:因为名称可能会是中文,这样直接附加在请求url中,struts2的过滤器不会对GET请求起作用.所以可能会出现乱码

改正后的写法:

//通过添加请求参数,把请求参数封装成一个object对象,这种写法是POST请求,POST请求会被struts2的filter拦截
$(‘#tree‘).tree(‘options‘).url = ‘./iface/findCustomerTree‘;
$(‘#tree‘).tree(‘load‘,{"customerName":searchValue,"object.state":$(‘#questionState‘).combobox(‘getValue‘)});

如果是datagrid,可以这么写:

var data = {};
data["customerName"] = searchValue;
data["object.state"] = $(‘#questionState‘).combobox(‘getValue‘);
$.ajax({
	 url:‘./iface/findCustomerTree‘,
	 data:data,
	 type:‘post‘,
	 success:function(data){
		 console.info(data);
	         $(‘#tree‘).tree(‘loadData‘,data);			 
	 }
});

现在出现了新的问题:

因为项目中需要做多层树,树的结构为:首层为customer;第二层为customer下的用户列表;第三层为该用户下的问题列表,于是这么做:

$("#tree").tree({
		onBeforeExpand:function(node){
			if(node.attributes && node.attributes.customerId){
				$(‘#tree‘).tree(‘options‘).url = "./iface/findUserTree?customerId=" + node.id+"&object.state="+$(‘#questionState‘).combobox(‘getValue‘);
			//如果attributes存在属性user,则表示展开的是用户user,那么需要查找的是该user下面的userfeedback提交的问题
			}else if(node.attributes && node.attributes.userId){
				$(‘#tree‘).tree(‘options‘).url = "./iface/findUserQuestions?loginId=" + node.id+"&object.state="+$(‘#questionState‘).combobox(‘getValue‘);
			//如果存在url属性,则表示右侧的tab页将要被填充(此时树节点为最末级的叶子节点,已经是open)
			}else if(node.attributes && node.attributes.url){
				//啥都不需要做
			}
		},
});

    上面的写法是通过当前节点的属性来判断,当前被操作的节点是一级,二级,还是三级节点,这么做之后产生了一个很奇怪的问题:

我们知道tree节点被展开的时候,会自动向服务器发送一个id的请求参数,这个是easyui的tree框架自动做的事情,而我们在展开一级和二级节点的时候,在tree的请求url后面添加了请求参数,在JS中可以看到该请求实际上是POST请求,但是url中的请求参数也能够被sturts2获取到.注意:***而如果在这之前,tree执行了tree(‘load‘,queryParams),那么就会在tree的options属性中把这queryParams对象中的内容添加到options中,然后再展开树的时候,该请求参数queryParams会作为tree的一个属性构成,即此时请求URL中附加了请求参数(通过?在请求后面加的参数),然后在POST请求中的内容FromData:id和queryParams,如图:

技术分享

这种方式的请求Action接受不到...我不知道是什么原因,后面只有把请求参数queryParams这个对象清空,即在onBeforeExpand方法中直接写上了:$(‘#tree‘).tree(‘options‘).queryParams = {};,接下来的代码和上面的一样:

$(‘#tree‘).tree(‘options‘).queryParams = {};
if(node.attributes && node.attributes.customerId){...}...


struts2接受的easyui的tree的搜索框的乱码问题

原文:http://my.oschina.net/u/2331760/blog/526533

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!