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
相关产品推荐
相关产品推荐

