如何处理错误“请求方法'GET'不受支持”

时间:2012-08-30 20:04:20

标签: spring spring-mvc

我想从列表视图中删除实体。我遇到了这个问题。你能解释一下我,问题是什么,我怎么能成功呢?

控制器方法:

@RequestMapping(value = "/deleteComment/{commentId}", method = RequestMethod.POST)
public String deleteComment(@PathVariable int commentId, BindingResult result, Model model){
{
    Comment deletedComment = commentService.findCommentByID(commentId);
    if (deletedComment != null) {
         commentService.deleteComment(deletedComment);
    }

     return "refresh:";
}

如果我正在处理list-view(我看到整个列表),是否需要指定'Get'方法。如果我需要,我应该在那里放置什么代码。我没有任何想法......

2 个答案:

答案 0 :(得分:2)

问题出在按钮类型属性中。

如果您有HTML按钮type="submit",那么您的服务只能是RequestMethod.GET。当您更改为RequestMethod.POST时,您的“请求方法'GET'不受支持”。

解决方案:将按钮标记中的属性更改为type="button"

答案 1 :(得分:1)

通过指定method = RequestMethod.POST,您实际上是说只应为deleteComment和路径POST调用/deleteComment/{commentId}方法。如果您希望它也接受GET请求,您可以删除该方法或以这种方式接受GET:

@RequestMapping(value = "/deleteComment/{commentId}", method = {RequestMethod.POST, RequestMethod.GET})

您可能还想以这种方式显式指定要绑定到commentId路径变量的变量的名称:

public String deleteComment(@PathVariable("commentId") int commentId, BindingResult result, Model model){