我在使用Ajax将json数据发送到控制器时遇到问题。
我认为我已经很好地发送了数据,但我收到以下警告。
org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver-已解决[org.springframework.web.bind.MissingServletRequestParameterException:所需的int参数'bno'不存在]
code:400 message:HTTP Status 400 – Bad Requesth1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} h2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} h3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} body {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} b {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} p {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;} a {color:black;} a.name {color:black;} .line {height:1px;background-color:#525D76;border:none;}HTTP Status 400 – Bad Request
Type Status Report
Message Required int parameter 'bno' is not present
Description The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).
Apache Tomcat/8.5.34
I'll show my ajax code
var headers = {"Content-Type" : "application/json"
,"X-HTTP-Method-Override" : "DELETE"
};
$.ajax({
url: root+"/restcmt/"+uid+"/"+cno
, headers: headers
, type: 'DELETE'
, data : JSON.stringify({"bno":bno})
, beforeSend : function(xhr){
xhr.setRequestHeader(_csrf_name, _csrf_token);
}
, success: function(result){
showcmtlist(bno);
}
, error: function(request,status,error){
console.log("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
还有我的控制器
@RequestMapping(value="/{uid}/{cno}", method=RequestMethod.DELETE)
public void deletecmt(@PathVariable int cno ,@PathVariable String uid,@RequestParam int bno
,@AuthenticationPrincipal SecurityCustomUser securityCustomUser) throws Exception{
}
并请求有效载荷
{"bno":14}
我不知道怎么了。
怎么了?
最佳答案
{"bno": bno}
在请求的正文中。因此,您的Controller方法应为@RequestBody int bno
。 @RequestParam
用于servlet请求参数。即:/uid/cno?bno=14
供参考的差异:What is difference between @RequestBody and @RequestParam?