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

Spring Boot中findAll()查询结果无法在JSP表格正常展示问题

问题分析与解决方案

1. Controller代码问题

  • 循环打印时错误输出了整个集合li,应该打印单个对象aswathyDTO,否则控制台无法查看单条数据的具体内容
  • 先后创建/设置了两个ModelAndView对象,前面的mav.addObject("li",li)和mav.setViewName("li")被后续return new ModelAndView("displayall.jsp","li",li)覆盖,逻辑冗余

修正后的Controller代码:

@RequestMapping("/viewall")
public ModelAndView findAll(){
   List<aswathyDTO> li = dao.findAll();
   // 打印单个对象,便于调试
   for (aswathyDTO dto : li) {
      System.out.println(dto);
   }
   // 直接返回正确的ModelAndView,指定视图和数据
   return new ModelAndView("displayall.jsp", "li", li);
}

2. JSP页面核心问题

  • 未引入JSTL核心标签库,导致<c:forEach>标签无法被解析,遍历逻辑失效,因此只能打印集合对象
  • <c:forEach>的var属性使用了和集合同名的li,会造成变量覆盖,访问单个对象属性时出错

修正后的JSP代码:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<body>
<%-- 保留此打印用于调试,确认数据是否传到页面 --%>
${li }

<table border="1">
  <tr>
    <th>id</th>
    <th>name</th>
    <th>age</th>
  </tr>
  <%-- var改用不同名称,比如dto,避免和集合变量li冲突 --%>
  <c:forEach items="${li}" var="dto">
    <tr>
      <td>${dto.id}</td>
      <td>${dto.name}</td>
      <td>${dto.age}</td>
    </tr>
  </c:forEach>
</table>
</body>

额外注意事项

  • 确保项目已引入JSTL依赖,若为Maven项目,需在pom.xml中添加:
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>
  • 确认aswathyDTO类中的id、name、age属性都有对应的getter方法,EL表达式需通过getter访问属性值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 05:35:26