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

Spring Boot+Thymeleaf模板解析报错,无法读取Model数据求助

问题排查方案

核心定位

既然注释<tbody>后页面能正常加载,且数据接口能正常返回用户数据,100%是<tbody>内部的Thymeleaf语法/数据引用出了问题,直接聚焦这块代码排查即可。

具体排查点

  • 循环语法错误
    检查th:each的写法是否规范,比如是不是误写成<tr th:each="user in ${users}">(正确语法是用:而非in);另外要确认迭代的集合是否为null——如果UserService返回的是null而非空集合,Thymeleaf会直接报错,建议返回Collections.emptyList()代替null。

  • 实体属性与getter不匹配
    模板里用${user.username}这类表达式时,要严格对应User实体类的定义:

    • 属性名必须完全一致(比如实体是private String userName,模板不能写${user.username})
    • 必须存在符合JavaBean规范的getter方法(比如属性是email,getter得是getEmail(),不能随意命名)
  • 变量名引用不匹配
    核对Controller传到模板的变量名和模板里的是否一致:比如Controller里是model.addAttribute("userList", userService.list()),模板里却写th:each="user : ${users}",变量名不匹配会导致找不到数据,触发解析异常。

  • 语法遗漏或格式错误
    检查<tbody>内的标签是否有未闭合、符号缺失的情况,比如<td th:text="${user.name}少了闭合的}",或者误用了中文引号,这类小错误会直接导致模板解析失败。

  • 特殊字符未处理
    如果用户数据里包含<、>、&这类特殊字符,用th:text输出没问题,但如果用原生HTML输出(比如th:utext或者直接写${user.content}),会破坏HTML结构,引发解析异常。

快速排查技巧

  1. 查看控制台的完整异常栈信息,Thymeleaf会明确标注错误发生的行号(比如Exception processing template "users": Error during execution of processor 'org.thymeleaf.processor.element.AbstractAttributeTagProcessor' (template: "users" - line 20, col 10)),直接定位到该行排查。
  2. 把<tbody>内的代码简化到最简:比如只保留<tr th:each="user : ${users}"><td th:text="${user.id}"></td></tr>,如果能正常运行,再逐步添加其他字段,定位是哪个字段出了问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 05:42:39