You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中使用POST请求出现405错误白屏问题求助

解决POST 405错误与Thymeleaf页面渲染问题

一、排查POST 405错误的核心方向

  1. 核对请求路径与控制器映射

    • 检查CurrencyController类上是否带有@RequestMapping前缀,比如类上标注了@RequestMapping("/currency"),那接口实际路径是/currency/1,如果前端直接请求/1,就会触发405(静态资源目录下无对应POST映射)。
    • 确认前端请求的URL、方法是否完全匹配:表单的method="post"是否拼写正确,AJAX请求的type是否设为POST。
  2. 检查拦截器/过滤器限制

    • 排查项目中自定义的拦截器、过滤器,是否对POST请求做了拦截或路径修改,导致请求无法到达控制器。
  3. 验证控制器方法有效性

    • 临时简化@PostMapping("/1")的方法,排除参数绑定等问题干扰:
      @PostMapping("/1")
      public String testPost() {
          return "redirect:/index";
      }
      
      用Postman直接请求对应路径(带项目上下文路径的话要加上),验证是否仍报405。

二、解决GET请求无法渲染页面的问题

你的index.html放在resources/static目录下,这是静态资源路径,Spring Boot会直接返回文件内容,不会经过Thymeleaf模板引擎处理,也不会触发控制器逻辑,因此无法渲染后端数据。

修复步骤:

  1. 迁移模板文件位置
    • 将index.html从resources/static移到resources/templates目录下,Thymeleaf默认扫描该目录下的模板文件。
  2. 编写GET映射的控制器方法
    • 在CurrencyController中添加返回视图并传递数据的方法:
      @GetMapping("/index")
      public String showIndex(Model model) {
          model.addAttribute("result", "待渲染的后端数据");
          return "index"; // 对应templates/index.html
      }
      
  3. 在模板中使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 00:55:55