一、问题概述:
当前端发送请求时,传递的参数是一个对象类型,例如:searchForm:{ name:1, age:18 }这种格式时,会习惯性使用@RequestBody在后端进行接收。但会发现无法接收到数据,如果你使用的请求方式是get,用的还是@RequestBody接收参数,还会报请求主体丢失的错误。
二、问题原因:
当前端传递对象型数据时,如果确定是Json格式,且请求方式为post,才能使用注解@RequestBody来进行接收,否则不是报错就是数据为空。后端直接使用对应的对象来接收这类前端传来的对象型数据也会极大可能性接收不到数据。
三、问题解决:
当遇到这类情况有三种解决方案:
1、在前端传递该对象型参数时,将参数格式设置为JSON格式;
2、将对象中属性进行拆分传输,即不以对象形式传递参数;
3、改变后端接收参数方法:
先利用接收字符串的方法(@RequestParam String data),将前端传递过来的对象型参数接收下来。
然后通过工具类JSONObject(接收到的字符串对象,目标类的class驱动),来将字符串转换成想要的对象。