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

求助:Thymeleaf无法显示数据库中三星冰箱数量的问题排查

问题排查与解决

1. 核心拼写错误问题

你在Repository的查询语句中写的是name='Frigider',但实际能查到数据的MySQL语句用的是name='Fridge',两个单词拼写不一致,导致查询返回结果为0(或null),Thymeleaf中samsungNumber没有有效值,因此显示空括号。

修正Repository的查询语句:

@Query(value="select count(*) from products where name='Fridge' and brand='Samsung' ", nativeQuery = true)
Long findNumberOfSamsungFridges();

2. 类型匹配优化

MySQL中count(*)返回的是BIGINT类型,用Integer接收可能存在隐式类型转换风险,建议将Repository方法的返回类型改为Long,同时Controller中对应变量也同步修改:

@GetMapping("/number/samsung/fridges")
public ModelAndView numberOfSamsungFridges(){
    ModelAndView modelAndView = new ModelAndView("products");
    Long numSamsungFridges = productRepository.findNumberOfSamsungFridges();
    modelAndView.addObject("samsungNumber", numSamsungFridges);
    // 打印日志验证查询结果,方便排查
    System.out.println("查询到的三星冰箱数量:" + numSamsungFridges);
    return modelAndView;
}

3. 确认请求路径是否正确

确保你在浏览器中访问的是/number/samsung/fridges路径来加载products页面,而非直接通过其他入口打开products页面。如果没走这个Controller方法,模型中不会注入samsungNumber变量,Thymeleaf自然显示空内容。

4. 验证Thymeleaf变量传递

可以在products页面临时添加调试代码,确认变量是否存在:

<!-- 调试用,验证后可删除 -->
<p th:text="'当前samsungNumber值:' + ${samsungNumber}"></p>

如果调试内容显示变量不存在,需检查Controller类是否添加了@Controller注解、路由是否被其他配置覆盖等。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 10:53:22