我正在尝试将请求转发给另一个接受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).
答案 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";
}
让它发挥作用。