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

Spring Boot整合Thymeleaf提交表单报405 POST方法不支持问题求助

问题根因与解决方法
  • 核心错误1:控制器类的路径前缀配置错误
    @Controller("/user")的参数是Spring容器中该Bean的名称,并非请求路径前缀。你需要在类上额外添加@RequestMapping("/user")注解配置全局路径前缀,否则你的/add接口实际访问路径为/add,和前端表单提交的/user/add路径不匹配,Spring找不到对应POST请求的处理器就会抛出405错误。

  • 核心错误2:接口请求方法未明确指定
    你当前的@RequestMapping(value = "/add")默认支持所有HTTP请求方法,建议显式使用@PostMapping("/add")注解指定该接口仅接收表单POST提交,避免歧义。


修改后控制器参考代码

@Controller
@RequestMapping("/user") // 类层面配置路径前缀
public class UserController {

    @Autowired
    private UserService userService;
    @Autowired
    private ModelMapper modelMapper;

    // 显式指定接收POST请求
    @PostMapping("/add")
    public String addUser(@ModelAttribute("user") final UserDto userDto) {
        userService.save(modelMapper.map(userDto, User.class));
        // 提交完成后建议使用重定向,避免用户刷新页面重复提交表单
        return "redirect:/user";
    }

    // 对应返回用户表单页面的GET接口,确保能正常渲染带user对象的页面
    @GetMapping
    public String initUserPage(Model model) {
        model.addAttribute("user", new UserDto());
        return "user";
    }
}

额外注意事项

如果后续修改后出现403错误,是Spring Security默认开启CSRF防护导致的,只需在form表单内添加CSRF隐藏域即可:

<form th:action="@{/user/add}" th:object="${user}" method="post">
    <!-- 新增CSRF token隐藏域 -->
    <input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
    <!-- 原有表单内容保持不变 -->
    <label for="fullName">Full Name</label>
    <input id="fullName" class="form-control form-group" type="text" th:field="*{fullName}">
    <label for="email">Email</label>
    <input id="email" class="form-control form-group" type="email" th:field="*{email}">
    <label for="password">Password</label>
    <input id="password" class="form-control form-group" type="password" th:field="*{password}">
    <p>
        <button class="form-group form-control btn btn-primary" type="submit" value="Submit">Submit</button>
    </p>
</form>

内容的提问来源于stack exchange,提问作者Christiaan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 17:27:03