Spring Boot中使用POST请求出现405错误白屏问题求助
解决POST 405错误与Thymeleaf页面渲染问题
一、排查POST 405错误的核心方向
核对请求路径与控制器映射
- 检查
CurrencyController类上是否带有@RequestMapping前缀,比如类上标注了@RequestMapping("/currency"),那接口实际路径是/currency/1,如果前端直接请求/1,就会触发405(静态资源目录下无对应POST映射)。 - 确认前端请求的URL、方法是否完全匹配:表单的
method="post"是否拼写正确,AJAX请求的type是否设为POST。
- 检查
检查拦截器/过滤器限制
- 排查项目中自定义的拦截器、过滤器,是否对POST请求做了拦截或路径修改,导致请求无法到达控制器。
验证控制器方法有效性
- 临时简化
@PostMapping("/1")的方法,排除参数绑定等问题干扰:
用Postman直接请求对应路径(带项目上下文路径的话要加上),验证是否仍报405。@PostMapping("/1") public String testPost() { return "redirect:/index"; }
- 临时简化
二、解决GET请求无法渲染页面的问题
你的index.html放在resources/static目录下,这是静态资源路径,Spring Boot会直接返回文件内容,不会经过Thymeleaf模板引擎处理,也不会触发控制器逻辑,因此无法渲染后端数据。
修复步骤:
- 迁移模板文件位置
- 将
index.html从resources/static移到resources/templates目录下,Thymeleaf默认扫描该目录下的模板文件。
- 将
- 编写GET映射的控制器方法
- 在
CurrencyController中添加返回视图并传递数据的方法:@GetMapping("/index") public String showIndex(Model model) { model.addAttribute("result", "待渲染的后端数据"); return "index"; // 对应templates/index.html }
- 在
- 在模板中使用Thymeleaf语法
- 在
index.html中通过Thymeleaf获取后端数据:<div th:text="${result}"></div> - 访问
/index即可看到渲染后的内容。
- 在
三、额外配置验证
确保application配置文件中Thymeleaf核心配置正确:
spring.thymeleaf.enabled=true spring.thymeleaf.prefix=classpath:/templates/ spring.thymeleaf.suffix=.html
如果是表单提交,需保证action路径正确指向POST接口:
<form action="/1" method="post"> <!-- 表单元素 --> <button type="submit">提交</button> </form>
内容的提问来源于stack exchange,提问作者zezzeebka
相关产品推荐
相关产品推荐

