Jstl foreach迭代列表与类

时间:2017-03-17 20:22:38

标签: foreach jstl

我创建了列表:

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>

1 个答案:

答案 0 :(得分:0)

您的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>