前台dataGrid表单数据传递到后台

时间:2022-03-03 09:46:18

前言

    最近在做基于SSH的WEB开发,前两天在前台datagrid数据传递到后台的问题上遇到一些困难,后来经过一番功夫,在网上各种搜索资料、各种调试后终于解决了这个问题,现在特意写下这篇博文来记录分享一下我的解决方法。以后在遇到这种问题就有章可循了,也给大家一个参考的方法。

解决过程

1.我们在页面上对dataGrid进行一些增删改的操作后要将表单数据从JS一次性传递到后台,主要是先通过easyui的方法$('#able').datagrid("getRows")先获取当前页所有的数据,然后通过JSON.stringify($('#table').datagrid("getRows"))方法将数据转换为JSON数据,接着在将JSON数据通过Ajax方法传递到后台,前台JS代码如下:

function saveGiftPurchaseAdd(){
	if (endEditing()){
		$.messager.confirm('确认', '确定要提交所有的数据?', function(r){
			if (r){
			    $.ajax({
			        type: "post",
			        url: sy.bp()+'/store/giftPurchaseAction_addGiftPurchase.action?dataJson='+JSON.stringify($('#table').datagrid("getRows")),
			        dataType: 'json',
			        success: function (data, textStatus) {
			        	if(data.resultCode == 1) {
			        		showRightBottomMsg("系统提示","提交成功!",'slide',5000);
			        		clearDatagridAndTree();
			        	} else {
			        		if(data.errorType == "user") {
			        			showAlertMsg("提示",data.msg,"warning");
			        		} else {
			        			showRightBottomMsg("系统提示",data.msg,'slide',5000);
			        		}
			        	}
			        },
			        error: function (XMLHttpRequest, textStatus, errorThrown) {
			            alert(textStatus + errorThrown);
			        }
			    });
			}
		});
	}
}
2.后台在Action层通过字符串变量先接收前台的JSON数据,然后要将对字符串的编码格式进行一下变换,不然中文字符很可能是乱码,原因是有些浏览器对JSON.stringify方法采用的是 uncode编码,因此要将其转为UTF-8的编码;然后通过JSONArray类的fromObject方法将json字符串转换为数组;再通过JSONObject的toBean方法将数组转为相应的java对象;具体代码如下:
	/**
	 * 从一个JSON数组得到一个java对象数组,形如: [{"id" : idValue, "name" : nameValue}, {"id" :
	 * idValue, "name" : nameValue}, ...]
	 * 
	 * @param object
	 * @param clazz
	 * @return
	 */
	public static Object[] getDTOArray(String jsonString, Class clazz) {
     String json = new String(request.getParameter("dataJson").getBytes("ISO-8859-1"),"UTF-8"); 
		JSONArray array = JSONArray.fromObject(jsonString);
		Object[] obj = new Object[array.size()];
		for (int i = 0; i < array.size(); i++) {
			JSONObject jsonObject = array.getJSONObject(i);
			obj[i] = JSONObject.toBean(jsonObject, clazz);
		}
		return obj;
	}

转为相应的java对象后我们便可以对数据进行随心所欲的处理了。

说明

    啊啊,这是我写的第一篇博文,写博文的目的就是为了记录自己的成长,说不定哪天成为了技术大牛过后,回头看看这些,就像是一个个的脚印,追溯回去也都能知道自己是从哪里来的,这便是一种记忆,记忆是我们生命中非常宝贵的东西,所以不可不记忆。

    如果这篇文章帮到了你,也请你给个赞,这个赞能让我更强的坚持下去,谢谢啦。



       做代码的创造者,让代码改变世界!