spirngmvc js传递复杂json参数到controller的实例

Spring MVC在接收集合请求参数时,需要在Controller方法的集合参数里前添加@RequestBody,而@RequestBody默认接收的enctype (MIME编码)是application/json,因此发送POST请求时需要设置请求报文头信息,否则Spring MVC在解析集合请求参数时不会自动的转换成JSON数据再解析成相应的集合。

以下列举接收List<String>、List<User>、List<Map<String,Object>>、User[]、User(bean里面包含List)几种较为复杂的集合参数示例:

接收List<String>集合参数:

1、页面js代码:

var idList = new Array();
idList.push(“1”);
idList.push(“2”);
idList.push(“3”);
var isBatch = false;
$.ajax({
 type: "POST",
 url: "<%=path%>/catalog.do?fn=deleteCatalogSchemes",
 dataType: 'json',
 data: {"idList":idList,"isBatch":isBatch},
 success: function(data){
  …
 },
 error: function(res){
  …
 }
}); 

2、Controller方法:

@Controller
@RequestMapping("/catalog.do")
public class CatalogController { 

 @RequestMapping(params = "fn=deleteCatalogSchemes")
 @ResponseBody
 public AjaxJson deleteCatalogSchemes(@RequestParam("idList[]") List<String> idList,Boolean isBatch) {
   …
 }
}

接收List<User>、User[]集合参数:

1、User实体类:

public class User {
  private String name;
 private String pwd;
 //省略getter/setter
} 

2、页面js代码:

var userList = new Array();
userList.push({name: "李四",pwd: "123"});
userList.push({name: "张三",pwd: "332"});
$.ajax({
 type: "POST",
 url: "<%=path%>/catalog.do?fn=saveUsers",
 data: JSON.stringify(userList),//将对象序列化成JSON字符串
 dataType:"json",
 contentType : 'application/json;charset=utf-8', //设置请求头信息
 success: function(data){
  …
 },
 error: function(res){
  …
 }
});

3、Controller方法:

@Controller
@RequestMapping("/catalog.do")
public class CatalogController { 

 @RequestMapping(params = "fn=saveUsers")
 @ResponseBody
 public AjaxJson saveUsers(@RequestBody List<User> userList) {
  …
 }
} 

如果想要接收User[]数组,只需要把saveUsers的参数类型改为@RequestBody User[] userArray就行了。

接收List<Map<String,Object>>集合参数:

1、页面js代码(不需要User对象了):

var userList = new Array();
userList.push({name: "李四",pwd: "123"});
userList.push({name: "张三",pwd: "332"});
$.ajax({
 type: "POST",
 url: "<%=path%>/catalog.do?fn=saveUsers",
 data: JSON.stringify(userList),//将对象序列化成JSON字符串
 dataType:"json",
 contentType : 'application/json;charset=utf-8', //设置请求头信息
 success: function(data){
  …
 },
 error: function(res){
  …
 }
}); 

2、Controller方法:

@Controller
@RequestMapping("/catalog.do")
public class CatalogController { 

 @RequestMapping(params = "fn=saveUsers")
 @ResponseBody
 public AjaxJson saveUsers(@RequestBody List<Map<String,Object>> listMap) {
  …
 }
} 

接收User(bean里面包含List)集合参数:

1、User实体类:

public class User {
 private String name;
 private String pwd;
 private List<User> customers;//属于用户的客户群
 //省略getter/setter
}

2、页面js代码:

var customerArray = new Array();
customerArray.push({name: "李四",pwd: "123"});
customerArray.push({name: "张三",pwd: "332"});
var user = {};
user.name = "李刚";
user.pwd = "888";
user. customers = customerArray;
$.ajax({
 type: "POST",
 url: "<%=path%>/catalog.do?fn=saveUsers",
 data: JSON.stringify(user),//将对象序列化成JSON字符串
 dataType:"json",
 contentType : 'application/json;charset=utf-8', //设置请求头信息
 success: function(data){
  …
 },
 error: function(res){
  …
 }
}); 

3、Controller方法:

@Controller
@RequestMapping("/catalog.do")
public class CatalogController { 

 @RequestMapping(params = "fn=saveUsers")
 @ResponseBody
 public AjaxJson saveUsers(@RequestBody User user) {
  List<User> customers = user.getCustomers();
  …
 }
} 

以上这篇spirngmvc js传递复杂json参数到controller的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

您可能感兴趣的文章:

  • springMVC返回复杂的json格式数据方法
  • 详解springmvc 接收json对象的两种方式
  • SpringMVC中controller接收json数据的方法
  • SpringMVC中controller返回json数据的方法
  • springMVC框架下JQuery传递并解析Json数据
(0)

相关推荐

  • springMVC框架下JQuery传递并解析Json数据

    json作为一种轻量级的数据交换格式,在前后台数据交换中占据着非常重要的地位.Json的语法非常简单,采用的是键值对表示形式. JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序,也可以从服务器端程序传递json格式的字符串给前端并由前端解释.这个字符串是符合json语法的,而json语法又是javascript语法的子集,所以javascript很容易解释它,而且

  • 详解springmvc 接收json对象的两种方式

    最近学习了springmvc 接收json对象的两种方式,现在整理出来,具体如下: 1.以实体类方式接收 前端 ajax 提交数据: function fAddObj() { var obj = {}; obj['objname'] = "obj"; obj['pid'] = 1 ; $.ajax({ url: 'admin/Obj/addObj.do', method: 'post', contentType: 'application/json', // 这句不加出现415错误:U

  • SpringMVC中controller返回json数据的方法

    本文实例为大家分享了SpringMVC中controller返回json数据的2种方法,供大家参考,具体内容如下 1.jsp的ajax请求: function getJson(){ $.ajax({ type:"get", dataType:"json", url:"<%=basePath %>getJson", success:function(data){ for(var i=0;i<jsonData.length;i++)

  • SpringMVC中controller接收json数据的方法

    本文实例为大家分享了SpringMVC中controller接收json数据的方法,供大家参考,具体内容如下 1.jsp页面发送ajax的post请求: function postJson(){ var json = {"username" : "imp", "password" : "123456"}; $.ajax({ type : "post", url : "<%=basePath

  • springMVC返回复杂的json格式数据方法

    一.springMVC返回json格式数据常用的写法是使用@ResponseBody注解,在每一个方法前加上这个注解,springMVC的json解析机制会自动把返回值(Object类型的对象)转换为json格式的数据,如果返回的json对象比较复杂,每一个方法都要定义很多对象,会给开发带来很大的工作量,以下介绍一种方法,直接使用json对象设置数据并放回. 二.当遇到以下json格式数据是,如果差用@ResponseBody方式需要创建多个Java对象. { "total":2, &

  • spirngmvc js传递复杂json参数到controller的实例

    Spring MVC在接收集合请求参数时,需要在Controller方法的集合参数里前添加@RequestBody,而@RequestBody默认接收的enctype (MIME编码)是application/json,因此发送POST请求时需要设置请求报文头信息,否则Spring MVC在解析集合请求参数时不会自动的转换成JSON数据再解析成相应的集合. 以下列举接收List<String>.List<User>.List<Map<String,Object>&

  • js传递数组参数到后台controller的方法

    传递参数传递字符串,所以要把数组转换为字符串, var arr=[1,23,34,5]; var str = arr.toString(); str传递到后台,str.split(" , ");将字符串拆分得到元素. var arr=[1,23,34,5]; var str = arr.toString(); document.write(str); var getArr = str.split(","); for(var i=0;i<getArr.lengt

  • JS传递对象数组为参数给后端,后端获取的实例代码

    前端JS代码: var conditons = []; var test1 = new Object(); test1.name="1"; test1.id="2"; var test2 = new Object(); test2.name="1"; test2.id="2"; conditons.push(test1); conditons.push(test2); $(function(){ $.ajax({ async:

  • 浅谈在js传递参数中含加号(+)的处理方式

    一般情况下,URL 中的参数应使用 url 编码规则,即把参数字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+). 但是对于带有中文的参数来说,这种编码会使编码后的字符串变得很长. 如果希望有短一点的方式对参数编码,可以采用 base64 编码方式对字符串进行编码,但是 base64 编码方式不能处理 JavaScript 中的中文,因为 JavaScript 中的中文都是以 UTF-16 方式保存的. 而 base64 只能处理单字

  • 完美解决js传递参数中加号和&号自动改变的方法

    在action中用get方法获得参数,如果参数里有"+",要做处理,否则到后台会变成空格. 解决方案: 1 .改用post方法: 2 .在 js 里用 url = encodeURI(encodeURI(XXX)) ,后台再解码一次: 3 .传递参数的时候直接替换转义,或者直接写转义后的代码 data =  "a + b": data = data.replace(/\+/g, "+"); data = data.replace(/\&/

  • php和js如何通过json互相传递数据相关问题探讨

    当我们在结合php和javascript实现某些功能时,经常会用到json.json是js的一种数据格式,可以直接被js解析.而php无法直接读取json数据,但是php提供了json_decode函数来对json数据进行转化,从而可以被php脚本访问.同时,php也提供了json_encode函数来将数据转化成json格式.那么,js中的原生json与php中通过json_encode函数转化后的json是否完全一样呢?今天,站长就和大家一起来探讨这个问题. 我们通过php向javascrip

  • AngularJS下$http服务Post方法传递json参数的实例

    本文主要介绍如何使用Angularjs $http服务以POST方法向服务器传递json对象数据. 具体如下: 一.$http POST方法默认提交数据的类型为application/json var data = {'wid':'0', 'praise' : '25'}; $http.post(url, data).success(function(result) { // }); 最终发送的请求是: POST http://www.example.com HTTP/1.1 Content-T

  • php post json参数的传递和接收处理方法

    页面1 ,php传递json参数的页面: 1.php <? function http_post_data($url, $data_string) { $ch = curl_init(); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); curl_setopt($ch, CURLOPT_HTTPHE

  • 解决SpringMVC Controller 接收页面传递的中文参数出现乱码的问题

    新配置一个spring的MVC项目,发现对Get请求的中文参数出现了乱码: 查看了SpingMVC中关于编码的配置(在web.xml中),如下: <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param>

  • JS函数参数的传递与同名参数实例分析

    本文实例讲述了JS函数参数的传递与同名参数.分享给大家供大家参考,具体如下: 函数参数的传递 函数参数如果是原始类型值,传递方式是值传递.这意味着,在函数体内修改参数值,不会影响函数外部. var p = 2 function f(p) { p = 3 } f(p) p // 2 上面代码中,变量p是一个原始类型的值,传入函数f的方式是值传递,因此在函数内部,p的值是原始值的拷贝,无论怎么修改,都不会影响到原始值. 但是,如果函数参数是复合类型,传入函数的方式是引用的传递,也就是说,传入函数的是

随机推荐