首先在前台的js文件中利用ajax技术将数据传给后台
前台JS文件代码
row = $("#dgAssessmentAdd").datagrid('getRows');//获取datagrid控件中的所有行数据
//创建数组
/* var arr = new Array();
for(var i = 0; i < row.length ; i++){
jsonRow = JSON.stringify(row[i]);
arr.push(jsonRow);
}*/
if (row.length) {
$.ajax(
{
type: 'POST',
url: "../ExamController/insertExam",
dataType: 'json',
async : false,
data: {
'orgId' : assesmentOrgId,
'examYear' : assesmentYear,
'arrayList' : JSON.stringify(row) //把数据转换为json格式字符串
},
说明:我只截取部分代码,这部分代码很简单,可以直接看注释。第一行是获取控件的数据,然后用JSON.stringify(row) 来把数据转化为JSON的格式,作为一个数组传输。通过浏览器可以看到具体格式如下:
arrayList:[{"examCode":"condition_wall_system","examName":"上墙制度执行情况"},{"examCode":"condition_work_license","examName":"人员持证上岗情况"},{"examCode":"condition_construct_account","examName":"现场台账建设情况"}]
这是一个JSON格式的字符串,一定不要发蒙,他只是一个字符串,后台需要对应的Stirng类型来接收。我们来看一下后台对应的接收的java代码:
@RequestMapping(value = "/insertExam", method = { RequestMethod.POST })
public @ResponseBody BaseResult insertExam(String orgId, String examYear,
String arrayList, HttpSession httpsession) {//此处为接收字符串的参数
BaseResult baseResult = new BaseResult();
Gson gson = new Gson();
// 从前台得到Exam的列表
List listExamFront = gson.fromJson(arrayList,
new TypeToken>() {
}.getType());
List listExamToServ = new ArrayList();
// 把model转成exam
for (ExamModel examModelTemp : listExamFront) {
listExamToServ.add(ConvertExam(examModelTemp, httpsession));
}
// 把listExamServ插入
try {
baseResult = examService
.insertExam(listExamToServ, orgId, examYear);
} catch (Exception e) {
baseResult.setFlag(false);
baseResult.setInfo("新增考核失败!");
logger.error(LOG + ":操作考核失败,信息为:" + e.getMessage());
}
return baseResult;
}
解释说明:在此处我们可以发现,后台接收参数为String类型,arrayList为这个对象的名字,后面是一大堆字符串。
那么我们来开始进行字符串的解析
转换成JAVAbean的类,需要用到Gson工具类这里可以参考一下这篇文档Gson的fromJson()方法。
我们对应的bean类是ExamModel然后直接用fromJson()这个方法
List listExamFront = gson.fromJson(arrayList,new TypeToken>() {
}.getType());
第一个参数就是我们的字符串名称,因为是一个列表,所以用List来接收。这样就可以把json字符串中每个对象对应映射到ExamModel中的相应对象字段上。那么这个list存储的就是多条ExamModel对象的集合了。(如果是映射单个bean对象可以参考上面文档中的第一种。)
然后就可以操作集合中的对象进行插入数据库或者修改,自己想做的操作。