将2列表插入标记<c:foreach> for for循环列表</c:foreach>

时间:2013-12-12 04:02:26

标签: java jsp spring-mvc

我想将2个List(订单和价格)同步插入页面(.jsp)和循环2列表。我只知道插入1列表,解决方法是什么解决方案将2 LIST插入页面(jsp)同步循环那个,我不知道问题的解决方案。谢谢。

文件:UserController.java

@RequestMapping(value="/{userName}", params = "mada", method=RequestMethod.GET)
    public String ordersOfUser(Model uiModel,@PathVariable("userName")String userName){

        List<Order> orders = orderService.findAllWithUsername(userName);
        List<Float> prices = new ArrayList<Float>();
        for(int i=0;i<orders.size();i++){
            prices.add(orderService.countPrice(orders.get(i).getId()));
        }

        uiModel.addAttribute("orders",orderService.findAllWithUsername(userName));
        uiModel.addAttribute("prices",prices);

        return "orders/orderofuser";

    }

文件:orderofuser.jsp

<body>
    <TABLE>
        <c:forEach items="${orders}" var="i">
            <tr>
                <td><B>ID</B></td>
                <td>${i.id}</td>
            </tr>
            <tr>
                <td>Order Date</td>
                <TD>${i.orderDate}</TD>
            </tr>
            <tr>
                <td>Number</td>
                <td>${i.number}</td>
            </tr>
            <tr>
                <TD>Description</TD>
                <td>${i.description}</td>
            </tr>
            <tr>
                <td>Status</td>
                <td>${i.status}</td>
            </tr>
            <tr>
                <td>Price</td>
                <td>"?"</td>
            </tr>

            <tr>
                <td>-------------------------------------------</td>
                <td>-------------------------------------------</td>
            </tr>
        </c:forEach>
    </TABLE>
</body>

3 个答案:

答案 0 :(得分:0)

如果您在jsp上获得两个单独的订单和价格列表,请使用嵌套循环,如下所示:

<c:forEach items="${orders}" var="order">
<tr>
    <td><B>ID</B></td>
    <td>${order.id}</td>
</tr>
.
.
.
<c:forEach items="${prices}" var="price">
    <c:if test="${order.id == price.orderId}"> // check if this price is of above order
        <tr>
            <td>Price</td>
            <td>${price.value}</td> // whatever you have properties in your prices list.
        </tr>
    </c:if>
</c:forEach>
.
.
.
</c:forEach>

答案 1 :(得分:0)

您可以将 ORDERS PRICES 合并到一个bean中,然后您可以迭代包含新bean对象的列表。

您可以修改您的Order bean类并将价格添加为该字段,它将如下所示:

public class Orders {


    private String id;
    private String orderDate;
    private String number;
    private String description;
    private String status;
    private String price;

  // with getters and setters

}

在您的订单服务类的findAllWithUsername(userName);方法您可以应用逻辑来为您在UserController中执行的每个订单添加价格。

希望这会有所帮助。

答案 2 :(得分:0)

快速google for“jsp foreach index”,您会找到varStatus属性,该属性为基于0和1的索引存储indexcount属性。在列表中。

做这样的事情:

<c:forEach items="${orders}" var="order" varStatus="status">
<tr>
    <td><B>ID</B></td>
    <td>${order.id}</td>
</tr>
.
.
.
<tr>
    <td>Price</td>
    <td>${prices.get(status.index)}</td>
</tr>
</c:forEach>