博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringMVC将表单对象序列化成Json字符串提交,以List接收
阅读量:4981 次
发布时间:2019-06-12

本文共 4363 字,大约阅读时间需要 14 分钟。

出自:http://blog.csdn.net/m0_37595732/article/details/71440853

HTML

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" isELIgnored="false"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
submitUserList_4

submitUserList_4

age:
name:
sex:
age:
name:
sex:

Java

@RequestMapping(value = "/submitUserList_4", method={RequestMethod.POST})    @ResponseBody    public String submitUserList_4(@RequestBody List
users) throws Exception{ String result = ""; if(users == null || users.size() <= 0){ return "No any ID.中文"; } result = this.showUserList(users); return result;}

启动SpringMVC的注解功能,完成请求和注解POJO的映射

text/html;charset=UTF-8

POM

org.codehaus.jackson
jackson-mapper-asl
1.9.13

js

$.fn.serializeJson = function(){                var jsonData1 = {};                var serializeArray = this.serializeArray();                // 先转换成{"id": ["12","14"], "name": ["aaa","bbb"], "pwd":["pwd1","pwd2"]}这种形式                $(serializeArray).each(function () {                    if (jsonData1[this.name]) {                        if ($.isArray(jsonData1[this.name])) {                            jsonData1[this.name].push(this.value);                        } else {                            jsonData1[this.name] = [jsonData1[this.name], this.value];                        }                    } else {                        jsonData1[this.name] = this.value;                    }                });                // 再转成[{"id": "12", "name": "aaa", "pwd":"pwd1"},{"id": "14", "name": "bb", "pwd":"pwd2"}]的形式                var vCount = 0;                // 计算json内部的数组最大长度                for(var item in jsonData1){                    var tmp = $.isArray(jsonData1[item]) ? jsonData1[item].length : 1;                    vCount = (tmp > vCount) ? tmp : vCount;                }                if(vCount > 1) {                    var jsonData2 = new Array();                    for(var i = 0; i < vCount; i++){                        var jsonObj = {};                        for(var item in jsonData1) {                            jsonObj[item] = jsonData1[item][i];                        }                        jsonData2.push(jsonObj);                    }                    return JSON.stringify(jsonData2);                }else{                    return "[" + JSON.stringify(jsonData1) + "]";                }            };

修改的js,返回json的数组对象

$.fn.serializeJson = function(){    var jsonData1 = {};    var serializeArray = this.serializeArray();    // 先转换成Object{id:Array(2),name:Array(2),pwd:Array(2)}==>{"id": ["12","14"], "name": ["aaa","bbb"], "pwd":["pwd1","pwd2"]}这种形式,即属性数组形式    $(serializeArray).each(function () {        if (jsonData1[this.name]) {            if ($.isArray(jsonData1[this.name])) {                jsonData1[this.name].push(this.value);            } else {                jsonData1[this.name] = [jsonData1[this.name], this.value];            }        } else {            jsonData1[this.name] = this.value;        }    });    // 再转成[Object,Object]==>[{"id": "12", "name": "aaa", "pwd":"pwd1"},{"id": "14", "name": "bb", "pwd":"pwd2"}]的形式,即对象数组    var vCount = 0;    // 计算json内部的数组最大长度    for(var item in jsonData1){        var tmp = $.isArray(jsonData1[item]) ? jsonData1[item].length : 1;        vCount = (tmp > vCount) ? tmp : vCount;    }    var jsonData2 = new Array();    if(vCount > 1) {        for(var i = 0; i < vCount; i++){            var jsonObj = {};            for(var item in jsonData1) {                jsonObj[item] = jsonData1[item][i];            }            jsonData2.push(jsonObj);        }    }else{        jsonData2.push(jsonData1);    }    return jsonData2;//返回的是json的对象数组};

 

总结:最关键的是JS中的拼接json数据,ajax请求的属性以及后台接收的参数

转载于:https://www.cnblogs.com/onlymate/p/7291060.html

你可能感兴趣的文章
[转]俞敏洪:我和马云就差了8个字... [来自: news.mbalib.com]
查看>>
intersection &union&zip
查看>>
Spark算子
查看>>
纯JS的ajax实例
查看>>
网站建设常识
查看>>
hashlib加密操作模块
查看>>
C#里的运算符和表达式
查看>>
解决挂载(mount:wrong fs type,bad option,bad superblock on )错误
查看>>
FastReport.Net使用:[20]条码控件使用
查看>>
表空间操作
查看>>
发布功能完成
查看>>
LeetCode: Reverse Nodes in k-Group
查看>>
06_zookeeper_原生API使用2
查看>>
javascript --- 继承初探七日谈 (一)
查看>>
排序算法一:插入排序(Insertion sort)
查看>>
线段树做题总结
查看>>
JAVA基于File的基本的增删改查
查看>>
RocketMQ安装与实例
查看>>
PHP知识库图谱汇总(完善中)
查看>>
大道至简阅读笔记07
查看>>