我有一个控制器操作,我认为应该是 HTTP PUT,但是当我尝试在控制器操作中使用 @RequestParam 时,Spring 会抱怨。HTTP PUT 方法是否不允许请求参数,这就是 Spring 拒绝它的原因吗?
@RequestMapping(value = "/{helpDocumentId}/vote", method = RequestMethod.PUT)
public void voteHelpfulness(@PathVariable long helpDocumentId, @RequestParam boolean isHelpful) {
helpManager.voteOnHelpDocument(helpDocumentId, isHelpful);
}
执行时,它会抛出此错误:
org.springframework.web.bind.MissingServletRequestParameterException: Required boolean parameter 'isHelpful' is not present
当然,isHelpful
参数是存在的。我可以使上面的代码完美地适用于 HTTP POST,所以我知道这不是问题。
$.ajax({
url: "/help/" + helpDocumentId + "/vote.json",
type: "PUT",
data: {
isHelpful: isHelpful
},
success: function(response) {
// ....
}
});
PUT 是正确的http方法吗?此操作会修改helpDocument
,但不会创建一个。