Spring MVC项目JSP表格无法显示Controller传递的列表内容问题
问题排查与解决方案
第一步:确认Controller中数据获取是否正常
你提到DAO层JUnit测试能拿到数据,但Controller中打印listGamer无输出,说明gamerDAO.list()返回了空列表,核心问题出在Controller与DAO的注入或调用环节:
- 检查
GamerDAO实现类是否添加了@Repository注解,Spring需要通过该注解识别DAO组件并创建实例:@Repository public class GamerDAOImpl implements GamerDAO { // 实现代码 } - 检查Spring配置文件(或Spring Boot启动类)是否开启了组件扫描,确保
com.shriram.gaming包下的Controller、DAO都被扫描到:
或者Spring Boot启动类添加<!-- XML配置方式 --> <context:component-scan base-package="com.shriram.gaming"/>@ComponentScan("com.shriram.gaming") - 临时取消Controller中打印代码的注释,同时增加
gamerDAO的空值判断:
启动项目后查看控制台,如果System.out.println("gamerDAO是否为空:" + (gamerDAO == null)); System.out.println("List of Gamers:"+ listGamer);gamerDAO为null,说明注入失败,需检查上述组件扫描和注解配置。
第二步:确保Controller数据能传递到JSP
如果Controller中已经能拿到非空列表,再排查JSP端的问题:
- 检查JSTL依赖是否正确引入:
如果是Maven项目,需在pom.xml中添加依赖:<dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> - 检查Spring MVC的视图解析器配置,确保能正确定位到
index.jsp:
确认<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> </bean>index.jsp的路径是否和解析器配置一致(比如放在WEB-INF/views/下) - 检查
Gamer类的属性是否有对应的getter方法,EL表达式${gamer.name}依赖getter方法获取值:public class Gamer { private String name; // 必须添加getter public String getName() { return name; } // 其他属性的getter同理 }
临时验证技巧
在JSP中直接输出${listGamer},如果显示[]说明列表为空;如果显示类似[com.shriram.gaming.model.Gamer@xxx],说明列表有数据,问题出在EL表达式解析(大概率是Gamer类缺少getter)。
内容的提问来源于stack exchange,提问作者Shriram
相关产品推荐
相关产品推荐

