Spring RedirectAttributes 不适用于@PostMapping(value = { "/", "/{id}" })
Spring RedirectAttributes not working with @PostMapping(value = { "/", "/{id}" })
我有一个这样的控制器:
@PostMapping(value = { "/" })
public String home(HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
return "redirect:/index.html?xyz=abc";
}
它正在将请求重定向到 Angular 应用程序并且按预期工作。
但是一旦我将 PostMapping 注释更改为:
@PostMapping(value = { "/", "/{id}" })
它开始在 chrome 控制台中给我一个 405 错误:
Failed to load resource: the server responded with a status of 405 ()
https://My_IP/index.html?xyz=abc
任何人都可以建议我在这里缺少什么吗?
是否需要在 Java 端或 Angular 端进行修复?
Angular版本:8.1.3
重定向属性来自org.springframework.web.servlet.mvc.support.RedirectAttributes
在 @post 映射中添加“/{id}”后,系统会尝试将 get 重定向请求与 /id 本身相匹配,因为它假定“index.html”为 id .
因为它是一个 get 重定向,而 /id 是一个 post 请求,它给出了 405 错误。
我通过不直接使用“/”,而是添加一个 API 名称来避免这个问题,如下所示:
@PostMapping(value = { "/home", "/home/{id}" })
在此之后,系统没有尝试将 https:///My_IP/index.html?xyz=abc 请求匹配到 /home 或 /home/id.
我有一个这样的控制器:
@PostMapping(value = { "/" })
public String home(HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
return "redirect:/index.html?xyz=abc";
}
它正在将请求重定向到 Angular 应用程序并且按预期工作。 但是一旦我将 PostMapping 注释更改为:
@PostMapping(value = { "/", "/{id}" })
它开始在 chrome 控制台中给我一个 405 错误:
Failed to load resource: the server responded with a status of 405 () https://My_IP/index.html?xyz=abc
任何人都可以建议我在这里缺少什么吗? 是否需要在 Java 端或 Angular 端进行修复?
Angular版本:8.1.3
重定向属性来自org.springframework.web.servlet.mvc.support.RedirectAttributes
在 @post 映射中添加“/{id}”后,系统会尝试将 get 重定向请求与 /id 本身相匹配,因为它假定“index.html”为 id . 因为它是一个 get 重定向,而 /id 是一个 post 请求,它给出了 405 错误。
我通过不直接使用“/”,而是添加一个 API 名称来避免这个问题,如下所示:
@PostMapping(value = { "/home", "/home/{id}" })
在此之后,系统没有尝试将 https:///My_IP/index.html?xyz=abc 请求匹配到 /home 或 /home/id.