angular - Spring RedirectAttributes 不适用于 @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 错误:
加载资源失败:服务器响应状态为 405 () https://My_IP/index.html?xyz=abc
谁能建议我在这里缺少什么?是否需要在 Java 端或 Angular 端进行修复?
角度版本:8.1.3
RedirectAttributes 来自 org.springframework.web.servlet.mvc.support.RedirectAttributes
解决方案
在@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。
推荐阅读
- aws-lambda - 在 Quarkus Amazon Lambda HTTP 指南中,Lambda 运行时在类路径上找不到 QuarkusStreamHandler
- java - 在测试失败时,WebDriverEventListener 的方法“beforeGetScreenshotAs”会持续运行。这种方法的最佳实现是什么?
- deep-learning - 在 Google Colab 的 pytorch 下使 CUDA 内存不足
- ios - iOS SwiftUI:从父级到子级的 ObservableObject
- vb.net - DataGridView中的组合框如何填充第二列中的另一个组合框
- maven - “maven.compiler.release”作为源和目标的替代品?
- java - VisualVM 工具中的反向呼叫和前向呼叫
- sql - Oracle SQL 实时选择并连接数百万条记录的表
- javascript - 如何仅将 div 内容附加到类中一次?
- image-processing - 如何从 2D 点云或激光雷达扫描数据中检测角点?