我创建了列表:
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>
答案 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>