Spring Boot使用ModelAndView返回视图时Thymeleaf模板解析500错误求助
问题根因定位
本次500错误本质是Thymeleaf解析dashboard-locador.html表单时,th:field/data-th-field属性依赖的绑定对象没有被正确注入到请求上下文,导致Spring无法找到对应BindStatus完成表单绑定。
排查&修复步骤
- 检查DashboardController中dashboard页面渲染接口的Model配置
渲染页面对应的GET接口必须手动将表单绑定对象添加到Model中,否则Thymeleaf无法识别表单绑定字段,示例正确写法:
如果是表单提交后返回页面时报错,需要确认POST接口的表单参数前添加了@GetMapping("/你的dashboard访问路径") public String showDashboard(Model model) { // 替换为你实际使用的表单实体类,属性名要和模板里的th:object对应 if (!model.containsAttribute("dashboardForm")) { model.addAttribute("dashboardForm", new DashboardForm()); } return "dashboard-locador"; }@ModelAttribute注解,指定和模板一致的绑定名:@PostMapping("/你的表单提交路径") public String saveForm(@Valid @ModelAttribute("dashboardForm") DashboardForm form, BindingResult result) { if (result.hasErrors()) { // 校验失败直接返回页面即可,@ModelAttribute已自动将表单对象注入Model return "dashboard-locador"; } // 业务逻辑处理 return "redirect:/你的dashboard访问路径"; } - 校验dashboard模板的表单配置
确认表单标签的th:object属性值和Controller中放入Model的属性名完全一致(大小写严格匹配),th:field的属性值和表单实体类的字段名完全一致,示例正确写法:<form th:action="@{/你的表单提交路径}" th:object="${dashboardForm}" method="post"> <input type="text" th:field="*{houseTitle}" placeholder="房源标题"> <!-- 其余表单字段写法一致 --> </form> - 修复模板路径异常
错误提示中的模板路径templates//dashboard-locador.html存在双斜杠问题,需要将Controller中返回的视图名开头的斜杠去掉,改为return "dashboard-locador"即可避免路径解析异常。 - 校验广告管理页跳转逻辑
确认跳转按钮的跳转路径为dashboard页面对应的GET接口路径,不要直接访问模板文件,也不要用POST请求跳转页面。
验证方法
完成以上修改后清理项目编译缓存,重启服务后点击跳转按钮,确认页面可以正常加载。
内容的提问来源于stack exchange,提问作者Francisco P.
相关产品推荐
相关产品推荐

