controller函数中参数列表使用多个@RequestBody

Posted xmanman

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了controller函数中参数列表使用多个@RequestBody相关的知识,希望对你有一定的参考价值。

本文参考 https://blog.csdn.net/qq_34608620/article/details/80635139

  • @requestbody的含义是在当前对象获取整个http请求的body里面的所有数据,因此spring就不可能将这个数据强制包装成A参数和B参数,
  • 一般情况下,@RequestBody只处理 Content-Type 是 application/json 或者 application/xml。
  • 并且从@requestbody设计上来说,只获取一次就可以拿到请求body里面的所有数据,就没必要出现有多个@requestbody出现在controller的函数的形参列表当中 

解决方法:

  一、前端,data: JSON.stringify(excelRelated.chooseData), 直接传送json字符串

                $.ajax({
                    //这里是php的url格式
                    url: "http://127.0.0.1:8081/source/downloadExcel",
                    type: "post",
                    contentType : ‘application/json; charset=UTF-8‘,
                    data: JSON.stringify(excelRelated.chooseData),
                    dataType: ‘json‘,
                    success: function (data) {
                        alert(111)
                    }
                })

  二、后台

封装成实体类对象

 1 package com.yyc.entity;
 2  
 3 import java.util.List;
 4  
 5 public class CoursePackage {
 6  
 7     public CoursePackage() {
 8         // TODO Auto-generated constructor stub
 9     }
10     
11     private Course course;
12     
13     private List<CourseInfo> courseInfoList;
14     
15     public void setCourse(Course course)
16     {
17         this.course = course;
18     }
19     
20     public void setCourseInfoList(List<CourseInfo> courseInfoList)
21     {
22         this.courseInfoList = courseInfoList;
23     }
24     
25     public Course getCourse()
26     {
27         return course;
28     }
29     
30     public List<CourseInfo> getCourseInfoList()
31     {
32         return courseInfoList;
33     }
34  
35 }

controller对应代码

1 @RequestMapping(method = RequestMethod.POST ,consumes = "application/json")
2     public String createCourse(@RequestBody CoursePackage coursePackage)
3     {
4         System.out.println(coursePackage.getCourse());
5         System.out.println(coursePackage.getCourseInfoList());
6         return "/createCourse";
7     }

 

以上是关于controller函数中参数列表使用多个@RequestBody的主要内容,如果未能解决你的问题,请参考以下文章

Express 函数中的“res”和“req”参数是啥?

如何使用把手将 req 参数传递给 js?

map函数的使用

spring 通过@responsebody接收多个对象参数

将列表传递给函数以充当多个参数

将一个值列表而不是多个参数传递给函数?