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

JSP EL表达式无法识别已声明的ArrayList变量,该如何解决?

JSP EL无法识别ArrayList变量的修复方案

核心原因:EL表达式仅能读取page、request、session、application四个作用域中存储的属性,你在JSP脚本中直接声明的ArrayList属于页面局部变量,不在EL的检索范围内,所以无法识别。

具体修复步骤:

  • 第一步:将你声明的ArrayList存入对应作用域,根据使用场景选择:
    仅当前页面使用就存入page域:
    <% 
    // 你原来声明ArrayList的代码
    ArrayList<String> dataList = new ArrayList<>();
    dataList.add("示例数据1");
    dataList.add("示例数据2");
    // 新增代码:将变量存入page域,自定义属性名后续EL用这个名访问
    pageContext.setAttribute("dataList", dataList);
    %>
    
    如果是请求跳转后仍要使用就存入request域,会话内通用存session域,全局所有用户通用存application域,对应代码分别为request.setAttribute("dataList", dataList)、session.setAttribute("dataList", dataList)、application.setAttribute("dataList", dataList)。
  • 第二步:直接用EL表达式访问你设置的属性名即可,比如配合JSTL遍历列表:
    首先确保页面头部引入JSTL核心标签库:
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    遍历代码:
    <c:forEach items="${dataList}" var="item">
        <p>${item}</p>
    </c:forEach>
    
  • 异常排查:如果还是无法访问,检查web.xml配置的Servlet版本是否在2.3以上,同时确认页面头部没有设置isELIgnored="true"禁用EL表达式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:27:06