Spring Thymeleaf遍历List表格无数据显示问题求助
解决Thymeleaf遍历List表格为空的问题
看起来你遇到的核心问题是Thymeleaf模板没有被正确解析,导致遍历逻辑压根没执行。我帮你梳理下可能的原因和解决办法:
1. 模板文件扩展名错误(最可能的原因)
你当前用的是home.jsp作为模板,但Thymeleaf的默认模板扩展名是.html。在Spring项目里,如果配置了Thymeleaf作为视图解析器,它只会处理.html后缀的模板文件;.jsp会被JSP视图解析器接管,这时候Thymeleaf的th:*标签会被当作普通HTML属性直接输出,不会执行遍历逻辑,自然表格里就没有数据。
解决办法:
把home.jsp重命名为home.html,并放到对应模板目录下:
- 如果你是Spring Boot项目,默认目录是
src/main/resources/templates/ - 如果是传统Spring MVC项目,根据你配置的视图解析器前缀(比如
/WEB-INF/templates/)放置
2. 验证Thymeleaf是否生效
你可以在模板里加一行测试代码,确认Thymeleaf是否在处理这个文件:
<div th:text="${notifications.size()}"></div>
如果页面显示10,说明数据已经传到模板,但遍历逻辑没生效;如果显示的是原生的${notifications.size()},那就是模板完全没被Thymeleaf解析,回到第一步检查文件扩展名和配置。
3. 检查Thymeleaf视图解析器配置(传统Spring MVC项目)
如果你不是Spring Boot项目,需要确保已经正确配置了Thymeleaf的视图解析器,示例配置如下:
@Configuration public class ThymeleafConfig { @Bean public ViewResolver thymeleafViewResolver() { ThymeleafViewResolver resolver = new ThymeleafViewResolver(); resolver.setTemplateEngine(templateEngine()); resolver.setCharacterEncoding("UTF-8"); return resolver; } @Bean public SpringTemplateEngine templateEngine() { SpringTemplateEngine engine = new SpringTemplateEngine(); engine.setTemplateResolver(templateResolver()); return engine; } @Bean public ITemplateResolver templateResolver() { ServletContextTemplateResolver resolver = new ServletContextTemplateResolver(); resolver.setPrefix("/WEB-INF/templates/"); resolver.setSuffix(".html"); // 这里必须和你的模板扩展名一致 resolver.setTemplateMode(TemplateMode.HTML); resolver.setCharacterEncoding("UTF-8"); return resolver; } }
4. 额外确认:实体类Getter方法
你的OrderNotify类的Getter方法命名是正确的(getOrderid()对应orderid属性),Thymeleaf可以正常通过这些方法获取属性值,这部分没问题。
按照上面的步骤调整后,你的表格应该就能正常显示10行数据了。
内容的提问来源于stack exchange,提问作者Jocasso
相关产品推荐
相关产品推荐

