问题引出:Caused by:Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported
今天碰到了这个错误,仔细的查了一下并总结了一下相关知识点。做一个总结。
原因:在Controller中使用了@RequestBody来接收参数对象,并且前端使用的是form提交。
正解:SpringMVC 接收对象或者数组的两种方式组合
1.前端直接使用form的submit提交(可以jquery.ajaxsubmit)。此时后端应该去掉@RequestBody注解直接直接使用对象接收参数。传数组的时候前端使用 name=foo[0].bar, Controller参数Object o,o内部包含属性private List<Foo> foo, foo有个属性bar 可以成功接收。也可以直接裸的List<Foo> foo来接。
2.前端使用json对象提交。此时后端用一个对象去接,需要使用@RequestBody注解,保证该对象的JSON.toJsonString之后的结构和你前端提交过来的json对象结构一致即可转换成功。
两种方式用混了就会报上面的错误。但是报上面错误的原因并不只有这一种,网上说的包冲突坑人不浅(如果你没有用包管理工具,那就当我没说~)
网友评论