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

Spring MVC项目JSP首行不识别及status.index异常问题求助

Spring MVC JSP问题解决指南

问题1:<c:forEach>中status.index始终为0

你的JSP代码里的<c:forEach>标签未声明varStatus属性,导致${status}变量不存在,当前${status.index}属于无效表达式,浏览器会默认解析为0或空值。

修正方法:
在<c:forEach>标签中添加varStatus="status"属性,同时删除代码中多余的</td>标签,修正后的代码如下:

<c:forEach var="contact" items="${listContact}" varStatus="status">
    <tr>
        <td>${status.index + 1}</td>
        <td>${contact.name}</td>
        <td>${contact.email}</td>
        <td>${contact.address}</td>
        <td>${contact.phone}</td>
    </tr>
</c:forEach>

问题2:JSP首行<%@ page...%>无法识别报错

该问题核心是依赖版本不兼容:Spring 6基于Jakarta EE 9+,但你使用了旧的javax版本JSP API,两者无法兼容。

修正步骤:

  1. 替换JSP API依赖为Jakarta版本
    修改pom.xml中的JSP API依赖,替换为以下内容:
<dependency>
    <groupId>jakarta.servlet.jsp</groupId>
    <artifactId>jakarta.servlet.jsp-api</artifactId>
    <version>3.0.0</version>
    <scope>provided</scope>
</dependency>
  1. 配置Spring MVC视图解析器
    在Spring MVC配置类中添加JSP视图解析器配置,确保使用JSTL视图:
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
    @Bean
    public InternalResourceViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/"); // 根据你的JSP实际存放路径调整
        resolver.setSuffix(".jsp");
        resolver.setViewClass(JstlView.class);
        return resolver;
    }
}
  1. 检查Eclipse项目配置
  • 右键项目 → Properties → Project Facets,确保Dynamic Web Module版本设置为4.0或更高(对应Servlet 6.0),并勾选JSP选项。
  • 右键JSP文件 → Properties → Content Type,将类型设置为text/x-jsp,确保IDE正确识别JSP文件。
  1. 清理并重建Maven项目
    执行以下Maven命令,清理旧依赖缓存并重新构建:
mvn clean install

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 20:09:54