springmvc参数为对象,数组的操作

这篇文章主要介绍了springmvc参数为对象,数组的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

参数为对象

1、提交表单

2、表单序列化,使用ajax提交

 var data = $("#addForm").serialize(); $.ajax({ url : "addReportDo",   //请求url type : "POST",  //请求类型  post|get data : data, dataType : "text",  //返回数据的 类型 text|json|html-- success : function(result){  //回调函数 和 后台返回的 数据 alert(result); } });

3、也可以这样写

 var data = { title: $("#title").val(), note: $("#note").val() };

4、如果结构复杂,使用@RequestBody

需要引用jackson

  com.fasterxml.jackson.corejackson-databind2.9.5 com.fasterxml.jackson.corejackson-annotations2.9.5 com.fasterxml.jackson.corejackson-core2.9.5

springmvc.xml配置

       text/html;charset=UTF-8text/json;charset=UTF-8application/json;charset=UTF-8

js写法

 var goods1 = { goodsNumber: "001", goodsName: "商品A" } var goods2 = { goodsNumber: "002", goodsName: "商品B" } var goodsList = [goods1,goods2]; var data = { title: $("#title").val(), note: $("#note").val(), goodsList: goodsList }; console.log(data); $.ajax({ url : "addReportDo",   //请求url type : "POST",  //请求类型  post|get data : JSON.stringify(data), contentType : "application/json", dataType : "text",  //返回数据的 类型 text|json|html-- success : function(result){  //回调函数 和 后台返回的 数据 alert(result); } });

注意ajax的两个属性,data属性变为JSON.stringify(data),增加contentType属性。

controller代码写法

 @ResponseBody @RequestMapping("addReportDo") public String addReportDo(@RequestBody Report report){ System.out.println(report); return "ok"; }

在参数前面加上@RequestBody即可。

5、传递数组

js写法

 var array = ["a","b","c"]; var data = { array : array }; console.log(data); $.ajax({ url : "addReportDo",   //请求url type : "POST",  //请求类型  post|get data : data, dataType : "text",  //返回数据的 类型 text|json|html-- success : function(result){  //回调函数 和 后台返回的 数据 alert(result); } });

controller写法

 @ResponseBody @RequestMapping("addReportDo") public String addReportDo(@RequestParam("array[]")  String[] array){ System.out.println(Arrays.toString(array)); return "ok"; }

也可以用List接收

 @ResponseBody @RequestMapping("addReportDo") public String addReportDo(@RequestParam("array[]") List list){ System.out.println(list); return "ok"; }

springmvc接受复杂对象(对象数组)

前端:

将请求头改为

 contentType:"application/json;charset=UTF-8"

后端:

自定义一个对象,将参数封装进该对象中

 @Data public class CaseBodyEntity { String token; CaseBasicModel caseBasic; String[] keywords; CaseInsurantAndProductModel[] caseInsurantAndProductModels; CaseExperienceModel[] caseExperiences; CaseAssessModel[] caseAssesses; }

使用使用POST方式接受请求,@RequestBody接受请求参数,对象为自定义的接受对象

 @ApiOperation("添加或更新案例,后台") @PostMapping("/addOrUpdateCase") public JSONObject addOrUpdateCase( @RequestBody CaseBodyEntity caseBodyEntity ) { ... }

@RequestBody和@RequestParam的区别

  • @RequestParam,主要处理contentType为application/x-www-form-urlencoded的数据(默认);@ResponseBody:主要处理contentType不为application/x-www-form-urlencoded的数据,例如:application/json;charset=UTF-8
  • @RequestParam:要指明前端传过来的参数名并与其对应;@RequestBody:直接对象接收,属性名要与前端传过来的数据的key值对应
  • 使用@RequestParam:Content-Type为application/x-www-form-urlencoded,参数在FormData中;使用@RequestBody:Content-Type为application/json,参数在Request PayLoad中
  • 可以使用多个@RequestParam获取数据;@RequestBody不能在同一个方法中出现多次

以上就是springmvc参数为对象,数组的操作的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » Java