我用spring mvc做,用post方式提交,后台获取不到参数值,用get方式就可以,什么问题

前台请求参数代码:
var data={"id":"1","name":"2"};
$.ajax({
url: "${pageContext.request.contextPath}/business/chgSort.do",
data:data,
dataType:"json",
type: "post",
contentType:"application/json;charset=utf-8",
后台接收代码:
@RequestMapping(value = "/chgSort",method=RequestMethod.Post)
public void chgSort(@RequestBody User user,HttpServletResponse response) throws Exception{
省略

}

其中id和name是User的属性。求大神搭救啊

因为form表单的enctype编码方式不同导致的;enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。

默认地,表单数据会编码为 "application/x-www-form-urlencoded"。就是说,在发送到服务器之前,所有字符都会进行编码。如果使用GET,则强制使用application/x-www-form-urlencoded"方式。我代码里强制使用了multipart/form-data方式,所以SpringMVC中获取不到POST形式的参数

spring mvc如果要接收 multipart/form-data 传输的数据,应该在spring上下文配置

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">       
</bean>

并将commons-fileupload-1.2.1.jar和commons-io-2.5.jar包引入到项目中

这样服务端就既可以接收multipart/form-data 传输的数据,也可以接收application/x-www-form-urlencoded传输的文本数据了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-08
@RequestBody需要设置contentType为application/json并且data是json字符串, var data='{"id":"1","name":"2"}'; 试试这样
第2个回答  2018-11-13

Spring Boot入门篇-@RequestParam/@RequestBody配置:网页链接

第3个回答  2013-09-27
@RequestMapping("/chgSort")
public void chgSort(HttpServletRequest request, Model model) {
Long id= Long.valueOf(request.getParameter("id"));你试下这个本回答被提问者采纳
相似回答