【问题标题】:Jstl iterate over a ListJstl 遍历列表
【发布时间】:2012-11-29 05:06:36
【问题描述】:

我正在尝试遍历列表并尝试将值打印为:

<jsp:useBean class="com.lftechnology.db.EmployeeDaoImpl" id="empImpl"></jsp:useBean>
<jsp:useBean class="com.lftechnology.employee.Employee" id="employee"></jsp:useBean>

<%
List<com.lftechnology.employee.Employee> empList = null; 
empList = empImpl.getAllEmployee();
out.println(empList.size());
%>


<c:forEach items="${empList}" var="element"> 
  <tr>
    <td>${element.name}</td>
    <td><c:out value="${element.name}" /></td>
     </tr>
</c:forEach>

但是,只打印列表的大小,而不是 jstl 中定义的 name。有什么帮助吗?我想打印employee对象的所有属性。

【问题讨论】:

    标签: java jsp jstl


    【解决方案1】:

    你为什么要使用 scriptlet?像这样的东西应该可以工作(我无法测试):

    <jsp:useBean class="com.lftechnology.db.EmployeeDaoImpl" id="empImpl"></jsp:useBean>
    
    <c:forEach items="${empImpl.allEmployee}" var="element"> 
      <tr>
        <td>${element.name}</td>
        <td><c:out value="${element.name}" /></td>
      </tr>
    </c:forEach>
    

    一些背景

    仅在 scriptlet 中声明一个变量并不会自动使其可用于 JSTL 运行时。事实上,JSTL 工作在由容器在运行时注入每个 JSP 的pageContext 上。因此,如果您确实需要在 scriptlet 中声明一个变量并希望将其提供给 JSTL,您必须明确地执行此操作:

    <%
    List<String> stuff = new ArrayList<String>();
    request.setAttribute("mystuff", stuff);
    %>
    
    <c:out value="${mystuff" />
    

    【讨论】:

      猜你喜欢
      • 2011-08-19
      • 1970-01-01
      • 1970-01-01
      • 2015-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-13
      • 2020-08-23
      相关资源
      最近更新 更多