前言
最近在做基于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对象后我们便可以对数据进行随心所欲的处理了。
说明
啊啊,这是我写的第一篇博文,写博文的目的就是为了记录自己的成长,说不定哪天成为了技术大牛过后,回头看看这些,就像是一个个的脚印,追溯回去也都能知道自己是从哪里来的,这便是一种记忆,记忆是我们生命中非常宝贵的东西,所以不可不记忆。
如果这篇文章帮到了你,也请你给个赞,这个赞能让我更强的坚持下去,谢谢啦。
做代码的创造者,让代码改变世界!