美文网首页JAVA
springMVC 参数 /复杂对象/ List /问题

springMVC 参数 /复杂对象/ List /问题

作者: LAMYMAY | 来源:发表于2018-06-18 16:19 被阅读0次

这里涉及用ajax向controller发送数据。方法是将ajax发送json数据,controller获取到json数据解析封装处理。以下将介绍:1传递json数据 2并封装的做法 

看图

参数接收

1、 参数是基础类型

(byte、short、int、long、float、double、boolean、char)

1.1-AJAX

$.ajax({

 url : "someurl",

 type : "POST",

 dataType : "JSON",

 data : {"name":"test", "password":"testpassword"},

 success : function(data) {

  console.log(data)

 }

})

1.2-JAVA

@RequestMapping("someurl")

@ResponseBody     //说明返回的是一个对象

public SomeData basicType(@RequestParam String name, @RequestParam String password){

 //具体业务方法

}

2、 参数是简单的对象类型

简单的对象类型是指,在对象中不包含复杂的数据结构类似于list,map等。在这里可以使用标签@ModelAttribute来直接将JSON数据封装成对象。

说明:

2.1 JAVA

@RequestBody接收的是一个Json对象的字符串,而不是一个Json对象。然而在ajax请求往往传的都是Json对象,后来发现用 JSON.stringify(data)的方式就能将对象变成字符串。同时ajax请求的时候也要指定dataType: "json",contentType:"application/json" 这样就可以轻易的将一个对象或者List传到Java端,使用@RequestBody即可绑定对象或者List.

@RequestMapping(value = "saveUser", method = {RequestMethod.POST }})

    @ResponseBody 

    publicvoidsaveUser(@RequestBody List users) {

        userService.batchSave(users);

    }

2.2 JavaScript

$(document).ready(function(){

        var saveDataAry=[]; 

        var data1={"userName":"test","address":"gz"}; 

        var data2={"userName":"ququ","address":"gr"}; 

        saveDataAry.push(data1); 

        saveDataAry.push(data2);       

        $.ajax({

            type:"POST",

            url:"user/saveUser",

            dataType:"json",     

            contentType:"application/json",             

            data:JSON.stringify(saveData),

            success:function(data){

            }       });    });

public class User{        //模型 用户的属性name,age

 private String name;

 private String address;

 private int age;

 //省略 getters and setters

}

@RequestMapping("/someurl")

@ResponseBody

public SomeData fun(@ModelAttribute User user){

//具体方法

}

$.ajax({

 url : "someurl",

 type : "POST",

 dataType : "JSON",

 data : {

  'name : 'test',

  'age' : 10

 },

 success : function(data) {

  console.log(data)

 }

})

3、参数是 复杂对象

//数据模型

public class User{

 private String name;

 private int age;

 private List<String> names;//朋友的名字

 private List<User> friends;//朋友

 //getters and setters

}

@RequestMapping("someurl")

@ResponseBody

public SomeData fun(@RequestBody User user){

 //方法详情

}

$.ajax({

 var friends=new Array();

var u1= {  'name': '小红',  'age ': 10 };

var u2= {  'name': '小红',  'age ': 10 };

friends.push(u1);

friends.push(u2);

var user={}

user.friends=friends;

 url : "someurl",

 type : "POST",

 dataType : "JSON",

 contentType:"application/json",

 data : JSON.stringify(user),

 success : function(data) {

  console.log(data)

 }

})

4、参数是 数组类型List<T>或 T[] ( T为基本数据类型 )

 $.ajax({  

                    type: 'POST',  

                    url: "/Api/Conversation/CancelRegister",                      

contentType: 'application/json;charset=utf-8',//将json数据以request payload的形式发起请求  

                    data: JSON.stringify(listData),  

                    success: function (response) {}  

}); 

-------------

但是以下的三种方式,在后端都无法有效的收到数据

$.post(url,{'list':data},function(success){...})  

或者  

$.ajax(type:"post",data:{"list":data},success:function(success){...})  

或者  

varformData=new FormData();  

formData.append("list",data);  

$.ajax(type:"post",data:formData,success:function(success){...})  

----------------------

list参数的其他问题

https://stackoverflow.com/questions/17560258/pass-array-data-from-javascript-in-browser-to-spring-mvc-controller-using-ajax/answer-17560332

-------------------------------------------------------------------------

相关文章

  • springMVC 参数 /复杂对象/ List /问题

    这里涉及用ajax向controller发送数据。方法是将ajax发送json数据,controller获取到js...

  • 04参数绑定

    参数绑定(重要)有以下几种 简单类型对象类型(简单对象)包装类绑定(对象里有对象)复杂类型绑定(数组 list m...

  • springMVC杂记

    18.7.30springmvc给controller传参数,传递数组。不可以用List接收,但是可以使用java...

  • SPRINGMVC POST数组/对象参数接收相关问题

    问题引出:Caused by:Content type 'application/x-www-form-urlen...

  • springmvc 06 Handler方法传参

    使用POJO作为参数springmvc会自动把参数注入到POJO对象的属性中,且包括级联注入 使用原生servle...

  • ToDo

    springMVC 注解list<>final

  • 函数

    函数 定义: 空函数 参数检查 返回多个值 默认参数 默认参数必须为不变对象 需要改为 可变参数 将 list 转...

  • Spring Data JPA 基本使用

    JPA查询传递参数和对象 参数 对象 通过spring-data-jpa进行复杂对象查询 通过spring-dat...

  • ajax数组对象springmvc List接收

    前端代码:var lps = [];var l = {"id":"123","name","123"}var p ...

  • SpringMVC掉坑之旅

    1、解决SpringMVC请求400的问题 springmvc请求参数获取的几种方法 2、解决返回数据中文乱码的问...

网友评论

    本文标题:springMVC 参数 /复杂对象/ List /问题

    本文链接:https://www.haomeiwen.com/subject/labdeftx.html