前台传递一个数组到后台,后台接受不到数据? 400 报错
前台入参check和oldCheck都是数组([]),
后台使用@RequestBody接受,接受到的均为null
使用@RequestParam接受,直接报400
只有在实体类中定义,使用@RequestBody接受对象,可以得到
求解惑
第一:不能有两个@RequestBody
第二:@RequestParam不能接收application/json的json数据
第三:一个@RequestBody正确
---------------分割线---------------
补充一下,想传数组还有一种方法:用@RequestParam接收
controller 代码
public void func(@RequestParam String[] names, @ReqeustParam Integer[] ages) {
// do someting
}
ajax代码
$.ajax(
url: url,
type: 'post',
data: {"names[0]": "name0", "names[1]": "name1", "ages[0]": "age0", "ages[1]": "age1"},
...
)
######回复 @小伯恩 : 不好意思,太久没上OSC了。因为每个请求就一个body体,requestBody是放在body体传的######为什么就不能有两个啊,别人传json数据######回复 @whatwhowhy : 是,用@RequestParam接收的话要是form表单提交才行######我后台ajax定义了 headers: { 'Accept': 'application/json','Content-Type':'application/json' }, 所以没成功。。。######还是报Required String[] parameter 'names' is not present 错。 springboot + framework######
这种 在ajax中以json传递的对象,在后端SPring 都认为是个对象,而不是将对象中的数组,分为多个数组。
这个本质上是JSON转换为Object的语义造成的。
######没,其实一楼说的很对,如果只有一个@RequestBody确实可以获取######回复 @whatwhowhy : 这个貌似很有意思,我一直没有这样获取过。 有实例的话可以说下######也不是这样吧,spring MVC貌似就可以这样获取######@RequestBody会去识别参数的类型。如果只有一个数组ajax参数里面写数组就可以。如果是多个就需要在后台封装一个对象接收了。
######传参数的时候 adminIds:JSON.stringify(row), 这样传参,你后台指定用adminIds接收,但是前台没这个参数的嘛,没那么智能
######有吧,在json里面有的######是不是 String[]的限定有问题
######不知道,第一次用springboot + framework ,所以拿出来求解惑######将后端参数定义前加@RequestBody 修饰
######@RequestBody接收,接到的是null,一楼说了只能有一个,我如果不用对象的话有好几个版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。