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,两者无法兼容。
修正步骤:
- 替换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>
- 配置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; } }
- 检查Eclipse项目配置
- 右键项目 → Properties → Project Facets,确保Dynamic Web Module版本设置为4.0或更高(对应Servlet 6.0),并勾选JSP选项。
- 右键JSP文件 → Properties → Content Type,将类型设置为
text/x-jsp,确保IDE正确识别JSP文件。
- 清理并重建Maven项目
执行以下Maven命令,清理旧依赖缓存并重新构建:
mvn clean install
内容的提问来源于stack exchange,提问作者Mayssa
相关产品推荐
相关产品推荐

