Thymeleaf th:each迭代失效,无法正常显示数据
Thymeleaf th:each迭代失效排查方案
1. 确认后端数据已正确传入Model
- 检查Controller代码,确保已将
stats集合添加到Model中,示例:@GetMapping("/stats") public String loadStats(Model model) { List<Stats> statsData = yourService.getStatsData(); // 打印日志验证数据是否非空 System.out.println("Stats data size: " + statsData.size()); model.addAttribute("stats", statsData); return "stats-template"; // 对应templates目录下的模板文件名 } - 确保
statsData不是null且包含有效数据,空集合或null都会导致迭代无输出。
2. 核对变量与属性名的一致性
- 前端
${stats}的变量名必须和后端model.addAttribute("stats", ...)的键名完全一致,Thymeleaf对大小写敏感。 - 实体类的属性名(如
country、state、latestTotalCases)必须和前端data.country等调用的名称一致,且实体类必须提供对应的getter方法(Thymeleaf通过getter读取属性值),示例实体类:public class Stats { private String country; private String state; private int latestTotalCases; // 必须实现getter方法 public String getCountry() { return country; } public String getState() { return state; } public int getLatestTotalCases() { return latestTotalCases; } // setter、构造方法按需实现 }
3. 检查Thymeleaf命名空间是否引入
页面的根html标签必须包含Thymeleaf命名空间,否则所有th:*属性会被忽略:
<html xmlns:th="http://www.thymeleaf.org">
4. 确保通过Controller访问模板
不能直接访问src/main/resources/templates下的静态html文件,必须通过Controller的映射路径访问,这样Thymeleaf才会解析模板中的动态属性。
内容的提问来源于stack exchange,提问作者Anuj Singh
相关产品推荐
相关产品推荐

