zTree插件数据以JSON格式传送到后台程序

最近在项目中使用到了zTree插件,需要在选中某些节点之后传送给后台处理。

起初的处理是,将选中的节点的值使用间隔符进行字符串拼接,拼接后post到后台,然后再使用间隔符进行拆分,然后在循环处理等等。

这样的字符串在后台处理起来非常麻烦:

1、字符串拆分就存在隐患(因为传送到后台的数据可能存在特殊字符啥的)

2、循环来循环去,搞了半天写的逻辑可能最后自己看起来都一塌糊涂的

 

所以决定重写整个数据采集和传送以及后台处理的过程。

 

1、在前端根据zTree的API重新获取需要的数据:

     根据业务需求,我其实是字需要叶子节点的数据的,代码如下:

 

				var zTree = $.fn.zTree.getZTreeObj("treeTrs");
				var checkNodes = zTree.getCheckedNodes(true);
				var uncheckNodes = zTree.getCheckedNodes(false);
				//搜集选中的标准问法信息
				var checkInfo = [];
				for(var i=0; i<checkNodes.length; i++){
					var node = checkNodes[i];
					//直接找叶子节点
					if(!node.children){
						checkInfo.push(node.name);
					}
				}
				//搜集未选中的标准问法信息
				var unCheckInfo = [];
				for(var i=0; i<uncheckNodes.length; i++){
					var node = uncheckNodes[i];
					//直接找叶子节点
					if(!node.children){
						unCheckInfo.push(node.name);
					}
				}

  2、再构造一个Object对象,主要是为了构造json字符串用的

 

//封装数据
var reqObj = new Object();
reqObj.currPro = currPro;
reqObj.provinceBizId = provinceBizId;
reqObj.provinceBizName = provinceBizName;
reqObj.checkInfo = checkInfo;
reqObj.unCheckInfo = unCheckInfo;

  3、ajax请求

     这里使用JSON.stringify函数将Object对象转换成json字符串 传递后java后台中

 

				// 发送请求
				$.ajax({
							type : "post",
							url : "saveProRecOp",
							contentType: 'application/json; charset=utf-8',
							data : JSON.stringify(reqObj),
							success : function(data) {
								if (data.success) {
									alert("操作成功!");
								} else {
									alert("操作失败");
								}
							},
							error : function(result) {
								alert(result);
							}
						});

  4、java后台接收json数据

 

	@RequestMapping(value = "/saveProRecOp", method = RequestMethod.POST)
	public @ResponseBody
	Map<String, Object> saveProRecOp(
			@RequestBody ProvinceTRSEditCommand trsEditCommand,
			HttpServletRequest request) 

  只需要看下方法声明就行了,注意其中有个 @RequestBody ProvinceTRSEditCommand trsEditCommand

项目中在xml中配置了一个MessageConverter,它会根据http请求中的contentType属性来判断,如果请求数据格式为json,则会使用jsonConverter来解析post数据。

至于为什么会解析成ProvinceTRSEditCommand类的对象,是因为该类的属性名称和js中构造的对象var reqObj = new Object(); 的属性是一模一样的,所以jsonConverter能够使用反射的方式来反序列化为一个类对象。

 

 

经过机上几个步骤之后,后台就只需要调用ProvinceTRSEditCommand对象的属性就行了,而不需要一直在间隔符中纠结了。

 

欢迎大家给出宝贵意见哇~~~

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值