我想将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>
答案 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的索引存储index
和count
属性。在列表中。
做这样的事情:
<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>