导致这个问题的原因:
使用AngularJS的$http进行POST请求,默认的Content-type为application/json; charset=UTF-8
为了让SpringMVC的Controller能够接收到数据,进行POST请求时的Content-type应修改为application/x-www-form-urlencoded; charset=UTF-8
既默认情况下,jQuery传输数据使用Content-Type: x-www-form-urlencodedand和类似于"name=zhangsan&age=18"的序列,然而AngularJS,传输数据使用Content-Type: application/json和{ "name": "zhangsan", "age": "18" }这样的json序列。
下图为POST请求默认的Content-type
解决办法: 我有试图过改AngularJS的源代码,但是没有成功, 其实本质上来说不该任何AngularJS的源代码事最好的,所以找到一种只改后台的代码,而且很简单,使用@ResponseBody注解 并且对象取值使用@ResponseBody即可
//public ResponseData insert(@PathVariable WeiBoUsers user) 默认为这种取值方式 //public ResponseData insert(@RequestBody WeiBoUsers user) 因为angular js前台使用的对象传输方式,所以后台加@ResponseBody注解并用@ResponseBody接收参数 @ResponseBody @RequestMapping(value = "/new",method = RequestMethod.POST) public ResponseData insert(@RequestBody WeiBoUsers user){ weiBoUserService.insert(user); return new ResponseData(user); }
其他修改的方法请参考以下链接:
https://blog.csdn.net/a3025056/article/details/78263663