【问题标题】:Jstl foreach Iterate list with classJstl foreach 用类迭代列表
【发布时间】:2017-03-17 20:22:38
【问题描述】:

我创建列表:

List<CheckoutDb> people = new ArrayList<CheckoutDb>();

我从数据库中获取信息并将其添加到类中:

CheckoutDb checkout = new CheckoutDb(rs.getInt("CheckOutNumber"),rs.getString("FirstName"));

然后我将它添加到列表中:

people.add(checkout);

然后我可以这样做以打印出列表:

for (CheckoutDb test : people) {
  System.out.println(test.getCheckOutNumber() + test.getFirstName() );
}

我将列表发送到一个 jsp 文件:

request.setAttribute("people", people);

我的问题是:如何在 jstl 中进行相同的迭代?

我已经这样做了,但没有打印出来:

    <c:forEach items="${people}" var="item">
        <td> ${item}</td>
    </c:forEach>

    <c:forEach items="${people}" var="item">
        <td> ${item.getFirstName()}</td>
    </c:forEach>

    <c:forEach items="${people}" var="item">
        <td> ${people}</td>
    </c:forEach>

输出: Goldenoaks.data.CheckoutDb@6f0602e0, goldenoaks.data.CheckoutDb@712ea5db, goldenoaks.data.CheckoutDb@3e3dc69e, goldenoaks.data.CheckoutDb@31e05b52,

如果我这样做:

${people.size()}

它输出正确的大小

如果我这样做,它只会打印列表中的最后一项:

        <c:forEach var="people" items="${checkedOutList}">
        <tr>
            <td>${people.firstName} ${people.lastName}</td>

        </tr>
        </c:forEach>

【问题讨论】:

    标签: foreach jstl


    【解决方案1】:

    您的 Java 代码不会像您在 JSP 代码中那样打印 CheckoutDb。它也不会像您在 JSP 代码中那样打印整个列表。

    它打印列表中每个项目的checkOutNumber 属性和firstName 属性。所以相当于(假设您希望每个项目都有一个表格行)

    <c:forEach items="${people}" var="item">
        <tr>
            <td><c:out value="${item.checkOutNumber}" /></td>
            <td><c:out value="${item.firstName}" /></td>
        </tr>
    </c:forEach>
    

    【讨论】:

    • 我之前这样做过,但没有打印出来,完全空白。
    • 那么您的人员列表可能是空的。
    • 但是当我做 ${books.size()} 时,它得到了我投入的确切金额。
    • 当我这样做时: ${people.checkOutNumber} ${people.lastName}
    • 那么你不会得到一些完全空白的东西。查看生成的 HTML 代码(右键单击 - 查看页面源代码),您应该会看到 s 和 s.
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签