解決Spring MVC Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported
阿新 • • 發佈:2018-12-23
前言
今天在提交Ajax請求的時候出現下面異常
具體異常
org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters (AbstractMessageConverterMethodArgumentResolver.java:152)
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:178)
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor. resolveArgument(RequestResponseBodyMethodProcessor.java:98)
前臺程式碼
$.ajax({
url:"khRyPfGsController.do?saveRows",
type:"post",
data:JSON.stringify(result),
dataType:"json",
success:function(data){
tip(data.msg);
if(data.success){
reloadTable();
}
}
})
後端程式碼
@RequestMapping(params = "saveRows")
@ResponseBody
public AjaxJson saveRows(@RequestBody List<Map<String, Object>> list) {
//省略
}
解決辦法
JS程式碼加上contentType:"application/json"
即可
$.ajax({
url:"khRyPfGsController.do?saveRows",
type:"post",
data:JSON.stringify(result),
contentType:"application/json",
dataType:"json",
success:function(data){
tip(data.msg);
if(data.success){
reloadTable();
}
}
})
原因
由於後臺是使用@RequestBody註解接收引數的,所以在前臺就必須指定內容型別。
僅供參考,不一定都試用。
================================================================================