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

Spring Boot+Thymeleaf表单传值跳转页面404问题求助

问题分析与解决方案

我来帮你拆解下当前遇到的问题核心,以及对应的修复步骤:

核心问题定位

你遇到的404错误,本质是表单提交的目标地址与Controller映射不匹配,同时处理表单提交的方法逻辑存在错误:

  • 表单的action="/edit",但你的Controller里并没有POST /edit的映射,只有POST /edit/{id},所以提交后找不到对应接口,触发404。
  • 负责处理表单提交的searchId POST方法存在三处错误:
    1. 方法名拼写错误:serachId应为searchId
    2. 错误使用@PathVariable获取参数:表单提交的参数是请求参数,不是路径变量,应该用@RequestParam
    3. 重定向地址写法错误:new ModelAndView("'/edit")是无效格式,无法正确带参数跳转

具体修复步骤

1. 修正表单提交目标

把表单的action改为指向处理提交的/searchId接口,而不是直接指向/edit:

<form method="post" action="/searchId">
 <h1>Please input the number</h1>
 <input type="text" name="id" />
 <input type="submit" value="Send" >
 <br>
 <a th:href="@{/}">Back enter display</a>
</form>

2. 修复Controller的表单提交处理方法

重新编写/searchId的POST方法,正确获取表单输入的id并跳转到目标编辑页面:

@RequestMapping(value="/searchId", method = RequestMethod.POST)
public String searchIdPost(@RequestParam("id") int id) {
    // 通过redirect前缀跳转到带id参数的编辑页面GET请求
    return "redirect:/edit/" + id;
}

3. 优化编辑页面的映射方法(可选)

你的/edit/{id} GET方法中,id的类型是int但MyData的id是long,可以直接把路径变量类型改为long,避免强制转换:

@RequestMapping(value = "/edit/{id}", method = RequestMethod.GET)
public ModelAndView edit(@ModelAttribute MyData mydata, @PathVariable long id, ModelAndView mav) {
 mav.setViewName("edit");
 mav.addObject("title", "edit mydata");
 mav.addObject("id",id);
 Optional<MyData> data = repository.findById(id);
 mav.addObject("formModel",data.get());
 return mav;
}

修复后流程说明

  1. 在表单输入id并点击提交,请求发送到POST /searchId
  2. 该方法获取到输入的id值,通过redirect:/edit/{id}跳转到编辑页面的GET请求
  3. GET /edit/{id}接口正常加载对应数据,展示编辑页面

这样就能解决你遇到的跳转问题啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:13:52