原因是数据传输的接收方式对不上。
Content-Type的类型有
1.application/x-www-form-urlencoded
常用@RequestParam(“参数名称”)也可以不写使用springMvc自己根据参数名称自动赋值
2.multipart/form-data
这个和上个差不多吧,如果是multipart类型的文件,记得在后端接收参数是直接使用 方法(multipart 参数名) 来接收,springMvc就会根据参数名来封装,接收到的对象还会有很多的方法可以查看并使用。
3.application/json
必须使用@RequestBody来处理
普通数据使用Map集合来接收数据,再利用map.get(“参数名称”)来获取,
如果参数可以封装成对象类型,就不需要自己在做什么只需要方法(@RequestBody User user或者@RequestBody List<User> userList) 直接就自动封装了很是舒服
如果参数是很多个相同类型的,使用@RequestBody注解将外部传递的json数组数据映射到形参的集合对象中作为数据 例如 方法(@RequestBody List likes)参数的值就全被封装在了集合中 这里有点和map那个相似,但是list集合是有序的,而map是双列集合,可以利用key获取值
解决方法一:
前端在请求参数中设置请求头为
header: {"Content-Type": "application/x-www-form-urlencoded"}
然后后端就可以用@RequestParam(“参数名称”)接收参数
解决方法二:
前端的请求头为
header: {"Content-Type": "application/json"}
后端要使用RequestBody来接收参数
@RequestMapping("/test")
@ResponseBody
public ResponseVO test(@RequestBody String productId){
}
网友评论