我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

这篇文章主要介绍“controller函数中参数列表怎么使用多个@RequestBody”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“controller函数中参数列表怎么使用多个@RequestBody”文章能帮助大家解决问题。

    controller参数列表使用多个@RequestBody

    首先出现这种情况是因为有下面这种需求

    $.ajax({              type: "POST",              url: "${pageContext.request.contextPath}/courses",              data: JSON.stringify({                course:course,          courseInfoList:courseInfoList           }),//将对象序列化成JSON字符串                          dataType:"json",              contentType : 'application/json;charset=utf-8', //设置请求头信息              success: function(data){              },              error: function(res){              }          });

    也就是在ajax传输数据时有多种数据类型在data域中

    从而就会有下面这种controller

    @RequestMapping(method = RequestMethod.POST ,consumes = "application/json")    public String createCourse(@RequestBody Course course, @RequestBody List<CourseInfo> courseInfoList)    {        System.out.println(coursePackage.getCourse());        System.out.println(coursePackage.getCourseInfoList());                return "/createCourse";    }

    这样就会出现400错误,服务器无法理解这个请求

    原因

    @requestbody的含义是在当前对象获取整个http请求的body里面的所有数据,因此spring就不可能将这个数据强制包装成Course或者List类型,并且从@requestbody设计上来说,只获取一次就可以拿到请求body里面的所有数据,就没必要出现有多个@requestbody出现在controller的函数的形参列表当中

    如果想解决这种问题

    新建一个包装上面两种entity的entity类:

    package com.yyc.entity; import java.util.List; public class CoursePackage {     public CoursePackage() {        // TODO Auto-generated constructor stub    }        private Course course;        private List<CourseInfo> courseInfoList;        public void setCourse(Course course)    {        this.course = course;    }        public void setCourseInfoList(List<CourseInfo> courseInfoList)    {        this.courseInfoList = courseInfoList;    }        public Course getCourse()    {        return course;    }        public List<CourseInfo> getCourseInfoList()    {        return courseInfoList;    } }

    然后将controller函数改为

    @RequestMapping(method = RequestMethod.POST ,consumes = "application/json")    public String createCourse(@RequestBody CoursePackage coursePackage,Model model)    {        System.out.println(coursePackage.getCourse());        System.out.println(coursePackage.getCourseInfoList());        return "/createCourse";    }

    但是这样又显得比较不够简洁

    .用Map<String, Object>接受request body,自己反序列化到各个entity中。

    @RequestBody是否存在的影响

    首先 明确一点是 RequestBody注解的主要作用就是用于接收前端的参数,当我们使用post请求的时候,我们会将参数放在request body中,此时我们就需要在Controller的方法的参数前面加上@RequestBody用来接受到前端传过来的request body中的值。

    @PostMapping("/save")    public Response<?> save(@RequestBody Insurance insurance){        return null;    }

    不使用@RequestBody注解时,可以接收Content-Type为application/x-www-form-urlencoded类型的请求所提交的数据,数据格式:aaa=111 b b b = 222 。

    form 表单提交以及 jQuery的 bbb=222。form表单提交以及jQuery的bbb=222。form表单提交以及jQuery的.post()方法所发送的请求就是这种类型。

    使用@RequestBody注解时,用于接收Content-Type为application/json类型的请求,

    数据类型是JSON:{“aaa”:“111”,“bbb”:“222”}

    以上内容来源于不同的资料内容。

    总是就是

    当入参只有一个参数的时候,此时** @RequestBody **的注解是否存在没有必要性,比如:String abcd;

    那么前端传参的时候:传入

    abcd = "1234";{abcd = "1234"}

    二者的区别不是很大。

    只有当入参较多,或者是一个实体类入参时,加上该注解,前端以json的形式传参,后台才能接收到。

    注意,如果多个值入参,比如:String aaa, String bbb,String ccc,

    当以这种形式入参时需要加上**@RequestParam**注解,用于匹配各参数是否能一一对应上。

    @RequestParam:将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解)

    语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””) 

    • value:参数名 

    • required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。 

    • defaultValue:默认参数值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值

    关于“controller函数中参数列表怎么使用多个@RequestBody”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

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

    这篇文章主要介绍“controller函数中参数列表怎么使用多个@RequestBody”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“controller函数中参数列表怎么使用多个@RequestB
    2023-07-06

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

    这篇文章主要介绍了controller函数中参数列表使用多个@RequestBody问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-15

    怎么在python中使用zip()函数遍历多个列表

    这篇文章将为大家详细讲解有关怎么在python中使用zip()函数遍历多个列表,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Python的优点有哪些1、简单易用,与C/C++、Java、C#
    2023-06-14

    JavaScript中函数参数使用对象而不是参数列表的示例分析

    这篇文章给大家分享的是有关JavaScript中函数参数使用对象而不是参数列表的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。函数参数使用对象而不是参数列表当我们使用参数列表给函数传递参数时,如果参数较少
    2023-06-27

    Python列表常用函数怎么使用

    这篇文章主要介绍“Python列表常用函数怎么使用”,在日常操作中,相信很多人在Python列表常用函数怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python列表常用函数怎么使用”的疑惑有所帮助!
    2023-06-22

    怎么使用mapper传递多个参数

    使用Mapper传递多个参数可以通过以下两种方式实现:1. 使用Map类型作为参数在Mapper接口方法中,使用Map类型作为参数,将需要传递的多个参数以键值对的形式放入Map中,然后在SQL语句中使用#{key}的方式引用参数。示例:``
    2023-10-12

    怎么在python中​使用append函数扩展列表

    这篇文章将为大家详细讲解有关怎么在python中使用append函数扩展列表,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Python主要用来做什么Python主要应用于:1、Web开发;2
    2023-06-14

    pytorch中BatchNorm2d函数的参数怎么使用

    本篇内容主要讲解“pytorch中BatchNorm2d函数的参数怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“pytorch中BatchNorm2d函数的参数怎么使用”吧!BN原理、作
    2023-07-04

    python怎么从列表中随机选取多个数

    您可以使用random模块的sample函数来从列表中随机选取多个数。以下是一个示例代码:```pythonimport randomlst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]num_samples = 3r
    2023-09-04

    python中怎么用list()函数创建列表

    在Python中,可以使用list()函数来创建一个空列表或从其他可迭代对象(如字符串、元组、集合等)中创建一个新的列表。以下是几种使用list()函数创建列表的方法:1. 创建一个空列表:pythonmy_list = list()2.
    2023-10-20

    Pytorch中backward()多个loss函数怎么用

    这篇文章主要介绍Pytorch中backward()多个loss函数怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Pytorch的backward()函数假若有多个loss函数,如何进行反向传播和更新呢? x
    2023-06-15

    jQuery中队列queue()函数怎么使用

    这篇“jQuery中队列queue()函数怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“jQuery中队列queue
    2023-07-04

    怎么使用c#构造函数初始化列表

    在C#中,可以使用构造函数初始化列表来初始化类的成员变量。构造函数初始化列表是在构造函数的参数列表后面使用冒号来定义的。下面是一个示例,展示了如何使用构造函数初始化列表来初始化类的成员变量:```csharppublic class MyC
    2023-09-28

    如何使用 SQL SELECT 从表中检索一个或多个数据列

    目录一、SELECT 语句二、检索单个列三、检索多个列四、检索所有列五、检索不同的值六、限制结果七、使用注释八、小结本文介绍了如何使用 SQL 的 SELECT 语句来检索单个表列、多个表列以及所有表列。也介绍了如何返回不同的值以及如何注释代码。一、SELEC
    如何使用 SQL SELECT 从表中检索一个或多个数据列
    2021-08-20

    Pytorch中的backward()多个loss函数怎么用

    这篇文章主要介绍了Pytorch中的backward()多个loss函数怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Pytorch的backward()函数假若有多个
    2023-06-15

    如何使用Python的count()函数计算列表中某个元素的数量

    如何使用Python的count()函数计算列表中某个元素的数量,需要具体代码示例Python作为一种强大且易学的编程语言,提供了许多内置函数来处理不同的数据结构。其中之一就是count()函数,它可以用来计算列表中某个元素的数量。在本文中
    如何使用Python的count()函数计算列表中某个元素的数量
    2023-11-18

    使用python怎么在函数中传递实参

    这期内容当中小编将会给大家带来有关使用python怎么在函数中传递实参,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面向对象的
    2023-06-14

    R语言中怎么利用sapply函数提取列表中的数据

    R语言中怎么利用sapply函数提取列表中的数据,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。y<-c("100-D","100-A","110-c","110-A")z<-s
    2023-06-02

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录