我有一个JSP页面,其中显示属于特定类别的所有产品。问题是所有这些都根据我是否循环“td”或“tr”而最终显示为垂直或水平。我想在网格中显示它们,其中3个产品在第1行,另外3在第2行,依此类推。关于如何实现这一点的任何想法?
ProductController.java
List<Product> productsLst = MasterDao.getAllProductsByCategory(new Integer(categoryId));
products.jsp
<table>
<tr>
<%
for (Product p : productsLst) {
%>
<td align="center">
<a href="product.jsp?productId=<%= p.getProductId() %>"><img src="../images/<%= p.getImage()%>" class="product-grid-img"/></a>
<br/><div id="product-name"><%= p.getName()%></div>
<br/><div id="money">$ <%= p.getListPrice()%></div>
</td>
<%
}
%>
</tr>
</table>
答案 0 :(得分:0)
只要使用一个计数器,如果有3个产品关闭tr并打开一个新的tr
答案 1 :(得分:0)
使用Guava的Lists.partition()方法:
List<List<Product>> rows = Lists.partition(productList);
page.setAttribute("rows", rows);
...
<c:forEach var="row" items="rows">
<tr>
<c:forEach var="product" items="row">
<td> ... details of the product ... </td>
</c:forEach>
</tr>
</c:forEach>
答案 2 :(得分:0)
已在此thread
中回答<table>
<s:iterator value="productList" status="status">
<s:if test="#status.index %4 == 0">
<tr>
</s:if>
<td>
<img src="../product/image?imageID=<s:property value="productID"/>&type=thumbnail" />
</td>
<s:if test="#status.index %4 == 0">
</tr>
</s:if>
</s:iterator>
<table>