如何使用scriptlet /表达式访问c:forEach中的迭代变量?

Joe*_*Joe 5 foreach jstl java-ee java-ee-6

var是一个静态属性,用于公开当前元素(正文的本地元素)

如何通过scriptlet /表达式访问var属性?

初始化代码

<% 
Employee e = new Employee();
e.setName("name");
e.setEmail("abc@gmail.com");
java.util.List<Employee> empList = new java.util.ArrayList();
empList.add(e);
request.setAttribute("empList", empList); %>
Run Code Online (Sandbox Code Playgroud)

forEach code 1 deferredExpression错误

<c:forEach var="emp" items="${employees}">
  <c:out value="${emp.name}"/><br><%=emp.getName()%> 
</c:forEach>
Run Code Online (Sandbox Code Playgroud)

也不

forEach code 2 deferredExpression错误

<c:forEach var="emp" items="${empList}" varStatus="status">
  Emp email: <%= ((Employee)(pageContext.findAttribute("emp"))).getName() %>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)

Joe*_*Joe 5

我每次更改时都有java.lang.NoSuchFieldError:deferredExpression因为我有不同版本的JSTL库,现在我只留下一个jstl-1.2.jar 关于JSTL的更多信息.

JSTL文档文档清楚地说明了"迭代的当前项目的导出范围变量的名称.此范围变量具有嵌套的可见性." 嵌套意味着从开始标记到结束标记.

EL代码

<c:forEach begin="0" end="5" var="countvar">
Iteration number ${ countvar + 24 }
</c:forEach>
Run Code Online (Sandbox Code Playgroud)

备用JSP脚本

<c:forEach begin="0" end="5" var="countvar">
Iteration number
<%= ((Integer) (pageContext.findAttribute("cv")).intValue()+24 %>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)

另一个c:forEach带有集合的示例

<% 
 Employee e = new Employee();
 e.setName("name");
 e.setEmail("abc@gmail.com");
 java.util.List<Employee> empList = new java.util.ArrayList();
 empList.add(e);
 request.setAttribute("empList", empList); 
%>

<c:forEach var="emp" items="${empList}" varStatus="status">
  Emp email: <%= ((Employee)(pageContext.findAttribute("emp"))).getName() %>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)


Ale*_*lex -1

<c:forEach var="emp" items="${empList}" varStatus="status">
  <c:out value="Emp email: ${emp.email}"/>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)