JSP遍历控制器传递的字符串列表时报first未定义错误如何解决
错误原因
- EL 表达式直接输出字符串到 JavaScript 代码中时不会自动添加引号,JSP 渲染完成后生成的实际运行代码为
console.log(first);,JavaScript 会将first识别为变量名而非字符串值,由于你未定义过该变量,因此抛出未定义的报错。
解决方案
基础修复(无特殊字符场景)
直接给 EL 表达式外层套上单引号,渲染后会生成合法的 JavaScript 字符串语法:
<c:forEach var="singleItem" items="${itemList}"> console.log('${singleItem}'); </c:forEach>
兼容特殊字符场景
如果字符串内容可能包含单引号、换行、HTML 特殊字符,建议配合 JSTL 的 fn:escapeXml 做转义处理,避免触发 JavaScript 语法错误:
<!-- 首先在JSP头部引入fn标签库 --> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> <c:forEach var="singleItem" items="${itemList}"> console.log('${fn:escapeXml(singleItem)}'); </c:forEach>
内容的提问来源于stack exchange,提问作者simsima
相关产品推荐
相关产品推荐

