在网格中显示产品

时间:2012-09-19 16:02:48

标签: java jsp

我有一个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">$&nbsp;<%= p.getListPrice()%></div>
    </td>
    <%
        }
    %>
    </tr>
</table>

3 个答案:

答案 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>