5

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

如何通过 scriptlet/expression 访问 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); %>

forEach 代码 1 deferredExpression 错误

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

也不

forEach 代码 2 deferredExpression 错误

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

3 回答 3

6

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

JSTL 文档文档清楚地说明了“迭代当前项的导出范围变量的名称。这个范围变量具有嵌套的可见性。” 嵌套表示从开始标签到结束标签。

代码

<c:forEach begin="0" end="5" var="countvar">
Iteration number ${ countvar + 24 }
</c:forEach>

替代 JSP 脚本

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

另一个带有集合的 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>
于 2013-10-24T06:30:14.843 回答
3

我使用以下一般代码段:

<c:forEach items="<%= itemList %>" var="item">
    <%
        ItemClass item = (ItemClass)pageContext.getAttribute("item");
    %>
    <p>Value with scriptlet: <%= item.getValue() %></p>
    <p>Value with EL ${item.value}</p>
</c:forEach>

您与 EL 的情况:

<c:forEach var="emp" items="<%= empList %>" varStatus="status">
  ${emp.name} email: ${emp.email}
</c:forEach>

你的小脚本案例:

<c:forEach var="emp" items="<%= empList %>" varStatus="status">
  <%
      Employee employee = (Employee)pageContext.getAttribute("emp");
  %>
  <%= employee.getName() %> email: <%= employee.getEmail() %>
</c:forEach>
于 2015-01-21T13:35:48.790 回答
-1
<c:forEach var="emp" items="${empList}" varStatus="status">
  <c:out value="Emp email: ${emp.email}"/>
</c:forEach>
于 2013-10-23T22:22:23.093 回答