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

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都被扫描到:
    <!-- XML配置方式 -->
    <context:component-scan base-package="com.shriram.gaming"/>
    
    或者Spring Boot启动类添加@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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 20:45:24