Spring MVC 接收前端传递的表单json字符串

来源:互联网 发布:windows隐藏文件夹 编辑:程序博客网 时间:2024/05/22 02:20

Spring MVC 接收前端传递的表单json字符串

初衷

在编写页面表单数据较多,并且很多input来自于循环,没有对应的Pojo类与之映射。
在这种情况下,如果循环不是太多的话可以自己构建一个Pojo对象,然后使用SpringMVC的form标签进行绑定。
但是表单过于复杂后这种方式代码就显得非常臃肿。所以采取在前端页面将表单数据拼接成json字符串,然后传递到controller,controller中以字符串进行接收,再通过fastjson类似工具构建为json对象,然后进行解析。

下面开始具体操作

1.test页面代码

先编写页面,我们假设页面有多个name和value属性需要填写,通过foreach循环来生成多个输入框。该页面的文件名为test.jsp

<form id="form1" method="post">    <c:forEach items="${list}" var="aa">    <input name="name${aa}"/>    <br/>    <input name="value${aa}"/>    <br/>    </c:forEach>    <button type="button" id="btn">提交</button></form>


2.test页面controller代码

对应的controller代码为:

   @RequestMapping(value = "/test")    public String test(Model model) {       List<String> list = new ArrayList<String>();       list.add("1");       list.add("2");       model.addAttribute("list", list);        return"test";    }


主要完成生成list,返回到页面。用于页面循环生成input。

3.表单提交

为了完成json转换后提交到后台,通过Ajax提交。

        $("#btn").click(function () {            var formData = $("#form1").serializeArray();            var d ={};           $.each(formData, function() {               d[this.name] = this.value;            });           console.log(JSON.stringify(d))            $.ajax({               type: "post",                url:"/testResult",                data:"str="+JSON.stringify(d),               dataType: "json",               ContentType: "application/json;charset=UTF-8",               success: function (data) {                   if (data && data.success == "true") {                        window.location.href = data.view;                    } else {                       alert("error");                   }                }            });        })    })


4.controller接收json

Controller中以字符串的形式进行接收,然后通过fastjson等工具转换为JSONObject对象,然后再根据值的类型选择相应的get方法进行取值即可。

 

   @ResponseBody   @RequestMapping(value = "testResult",method =RequestMethod.POST)    public Map<String, Object> testResult(String str){       Map<String, Object> map = new HashMap<String, Object>();               //json字符串转换为json对象        JSONObject jsonObject = JSONObject.parseObject(str);         //从json对象中取值,根据值的类型选择get方法       jsonObject.getString("");        map.put("success", "true");       map.put("view", "#");        return map;    }

0 0
原创粉丝点击