【问题标题】:Spring RedirectAttributes not working with @PostMapping(value = { "/", "/{id}" })Spring RedirectAttributes 不适用于 @PostMapping(value = { "/", "/{id}" })
【发布时间】:2021-01-24 11:44:40
【问题描述】:

我有一个像这样的控制器:

@PostMapping(value = { "/" })
public String home(HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
return "redirect:/index.html?xyz=abc";
}

它正在将请求重定向到 Angular 应用程序并按预期工作。 但是一旦我将 PostMapping 注释更改为:

@PostMapping(value = { "/", "/{id}" })

它开始在 chrome 控制台中给我一个 405 错误:

加载资源失败:服务器响应状态为 405 () https://My_IP/index.html?xyz=abc

谁能建议我在这里缺少什么? 是否需要在 Java 端或 Angular 端进行修复?

Angular 版本:8.1.3

RedirectAttributes 来自 org.springframework.web.servlet.mvc.support.RedirectAttributes

【问题讨论】:

    标签: angular spring-boot spring-mvc java-11


    【解决方案1】:

    在@postmapping 中添加“/{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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-24
      • 2020-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多