1. 程式人生 > >SpringMVC將表單物件序列化成Json字串提交,以List接收

SpringMVC將表單物件序列化成Json字串提交,以List接收

HTML

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" isELIgnored="false"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="ctx" value="${pageContext.request.contextPath}"/>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html> <head> <title>submitUserList_4</title> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <script language="JavaScript" src="${ctx }/js/jquery-3.1.1.min.js" ></script> <script language="JavaScript" src="${ctx }/js/parseJson.js"
>
</script> <script type="text/javascript" language="JavaScript"> //將表單序列化成json格式的資料(但不適用於含有控制元件的表單,例如複選框、多選的select) function submitUserList_4() {alert("ok"); var jsonStr = $("#form1"). serializeJson(); //console.log("jsonStr:\r\n" + jsonStr);
//alert(jsonStr); $.ajax({ url : "${ctx}/test/getJsList", type : "POST", contentType : 'application/json;charset=utf-8', //設定請求頭資訊 dataType : "json", data : jsonStr, success : function(data) { alert(data); }, error : function(res) { alert(res.responseText); } }); }
</script> </head> <body> <h1>submitUserList_4</h1> <form id="form1"> age:<input type="text" name="age" value="11"><br/> name:<input type="text" name="name" value="jack"><br/> sex:<input type="text" name="sex" value="男"><br/><br/> age:<input type="text" name="age" value="12"><br/> name:<input type="text" name="name" value="rose"><br/> sex:<input type="text" name="sex" value="女"><br/><br/> <input type="button" value="submit" onclick="submitUserList_4();"> </form> </body> </html>

JAVA

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

啟動SpringMVC的註解功能,完成請求和註解POJO的對映

<!-- 自動掃描該包,使SpringMVC認為包下用了@controller註解的類是控制器 -->
    <context:component-scan base-package="com.leon" />
    <!--避免IE執行AJAX時,返回JSON出現下載檔案 -->
    <bean id="mappingJacksonHttpMessageConverter"
        class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
        <property name="supportedMediaTypes">
            <list>
                <value>text/html;charset=UTF-8</value>
            </list>
        </property>
    </bean>
    <!-- 啟動SpringMVC的註解功能,完成請求和註解POJO的對映 -->
    <bean
        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="messageConverters">
            <list>
                <ref bean="mappingJacksonHttpMessageConverter" /> <!-- JSON轉換器 -->
            </list>
        </property>
    </bean>

POM

<!-- 映入JSON -->
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.13</version>
        </dependency>

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) + "]";
                }
            };

相關推薦

SpringMVC物件序列化成Json字串提交List接收

HTML <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" isELIgnored="false"%>

javascript jqueryform序列化成json提交

由於本人剛接觸java就要開始開發專案,用到的東西很多很雜,對javascript以及jquery只是一知半解,只能通過不斷的學習慢慢的補起來了。 由於自己要獨立的開發一個簡單的系統,其中會用到form表單序列化成json後提交,配合服務端spring mvc的@Reque

內容轉化成json字串並通過ajax提交

1.JQuery的自定義方法,直接寫個js檔案放到裡邊,用的時候引一下就可以。 (function($) { $.fn.extend({ serializeObject :

用js資料封裝成json字串

用js將表單資料封裝成json字串 1.js中封裝程式碼: $.fn.serializeObject = function() { var o = {}; var a = this.serializeArray(); $.each(a, func

資料 序列化 為 js物件

$.fn.serializeObject = function () { var o = {}; var a = this.serializeArray(); $.each(a, function () { if (

jqueryform內容轉換為json字串

  var formObject = {}; var formArray = $("#form").serializeArray(); $.each(formArray, function (i, item) { formObject[item.name] = item.val

jquery把資料序列json支援多維陣列

jQuery.formHelper = { getObject: function (urlserialize) { if (urlserialize) { urlserialize = decodeURI(urlserialize);

在C#中將物件序列化成Json格式

在C#中將物件轉換為Json格式的字串。 //匿名物件 var dataObj = new { Number = 1, Name = "Json" }; //將返回的

jQuery 資料序列化為json格式

jQuery是在web應用中使用的指令碼語言之一,因其具有輕量級,易學易用等特點,已廣泛應用,其中的ajax封裝簡化了我們的應用,對其表單資料序列化用如下方法: 1.serialize()方法   格式:var data = $("#formID").serialize

Spring Boot Cache配置 序列化成JSON字串

當我們使用@Cacheable註解的時候會將返回的物件快取起來,我們會發現預設快取的值是二進位制的,不方便檢視,為此我們自定義序列化配置,改成JSON格式的 配置如下: pom.xml <?xml version="1.0" encoding="UTF-8

Java物件化成 json字串 輸出

 ======ok == com.alibaba.fastjson.JSONObject ====== res :  {"bwDictId":2,"list":"127.0.0.1","logUserId":33,"note":"黑名單測試Note","sco

利用Jquery序列化成JS物件

//表單序列化成JSON物件 $.fn.serializeObject = function () { var o = {}; var a = this.serializeArray(); $.each(a, function () { if (o[this.name]) { if (!o[this.nam

Jquery 序列化為Json物件.同時提交多個的引數

首先對某一表單進行Json物件序列化:  [javascript] view plain copy (function($){           $.fn.serializeJson=function(){               var se

序列化為json物件

<script> $(function(){ //工具方法(將指定表單的輸入項序列化為json物件) $.fn.serializeJson=function(){

jsform內的序列化為json字串、陣列、物件

序列化為字串var params1 = $(#myform).serialize();//name=zhangsan&sex=1&age=20序列化為陣列$(#myform).serializeArray();//[Object, Object, Objec

序列化為json對象

pan span class obj ret value his json () $.fn.serializeJson=function(){ var serializeObj={}; var array=t

格式化外掛jquery.serializejson上的資料轉換成JSON物件

沒有這個外掛之前要想JS獲取到form表單的資料,在ajax傳到後臺也是蠻痛苦的事,雖然都是簡單用$(“#id”).val()獲取到表單的值,要是量多了也是很磨人的。 好吧,廢話不多說!看下這個jquery.serializejson.js外掛是怎麼給我們帶來

序列化為json字串

網上序列化表單內容成json字串,有的很複雜有的完全不好用;現在分享的是真正好用的一個例子。 準備內容 1. js中if的條件表示式 所有的物件都被當作 true 當且僅當字串為空時,該字串

SpringMVC form提交list物件集合

form表單頁面 <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %&

陣列封裝成Json物件陣列

最近在搗鼓著Json與ajax結合傳遞資料到後臺。在這此前寫過Gson處理前端傳遞過來的Json物件陣列所以接著寫一下如何把表單陣列封裝成Json物件。 場景:需要把表格中的表單轉化為一個Json物件 我通過使用jQuery的相關方法實現表單資料的序