Spring 3 - 如何从前锋获取GET请求

时间:2013-05-05 01:28:31

标签: spring-mvc http-status-code-405

我正在尝试将请求转发给另一个接受GET请求的Spring控制器,但它告诉我不支持POST。这是我的第一个控制器方法的相关部分,它确实接受了POST请求,因为我将它用于登录功能。

@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(@ModelAttribute("administrator") Administrator administrator,
    Model model) {
    // code that's not germane to this problem
    return "forward:waitingBulletins";
}

这是我要转发的方法。

@RequestMapping(value = "/waitingBulletins", method = RequestMethod.GET)
public String getWaitingBulletins(Model model) {
        // the actual code follows
    }

以下是我浏览器中的错误消息。

HTTP Status 405 - Request method 'POST' not supported

--------------------------------------------------------------------------------

type Status report

message Request method 'POST' not supported

description The specified HTTP method is not allowed for the requested resource (Request method 'POST' not supported).

1 个答案:

答案 0 :(得分:4)

forward保持原始请求不变,因此您转发POST请求并错过了处理程序。

从它的外观来看,你真正想要实现的是POST-redirect-GET模式,它使用重定向而不是前向。

您只需要将POST处理程序更改为:

@RequestMapping(value = "/login", method = RequestMethod.POST) 
public String login(@ModelAttribute("administrator") Administrator administrator,
    Model model) {
    // code that's not germane to this problem
    return "redirect:waitingBulletins";
}

让它发挥作用。