我是Java企业编程的初学者,现在我的目标是做一个食品订单系统。我将数据库中的所有记录显示在jsp页面内的表中。现在我想获取我选择进入数据库的每一行的记录,但问题是我只能在我的arraylist中提交最后一条记录。有人可以提供一些帮助吗?
<table>
<tr>
<th>Name</th>
<th>Price</th>
<th>Restaurant</th>
<th>Add to Cart</th>
</tr>
<%
List<FoodRecord> foodDisplay =
(List<FoodRecord>)
session.getAttribute("foodDisplay");
if(searchResult == null){
for(FoodRecord foodRecord: foodDisplay)
{
%>
<tr>
<td><%=foodRecord.getName()%></td>
<td><%=foodRecord.getPrice()%></td>
<td><%=foodRecord.getRestaurant()%></td>
<td>
<form action="cost" method="post" name="menu">
<input type="submit" value="Add to cart" name="order"/>
<%
session.setAttribute("id", foodRecord.getFoodId());
session.setAttribute("name", foodRecord.getName());
session.setAttribute("price", foodRecord.getPrice());
%>
</form>
</td>
</tr>
答案 0 :(得分:3)
session.setAttribute
只能保存一个值。您现在编码的方式,值被覆盖,当页面发布到浏览器时,只有最后的值存储在session
对象中。
如果您使用隐藏字段,则每个表单都将保留自己的值,并将使用以下格式发布:
<form action="cost" method="post" name="menu">
<input type="submit" value="Add to cart" name="order"/>
<input type="hidden" id="id" value="<%=foodRecord.getFoodId()%>"/>
<input type="hidden" id="name" value="<%=foodRecord.getName()%>"/>
<input type="hidden" id="price" value="<%=foodRecord.getPrice()%>"/>
</form>
答案 1 :(得分:0)
因为您将其设置为最后的值:
session.setAttribute("id", foodRecord.getFoodId());
session.setAttribute("name", foodRecord.getName());
session.setAttribute("price", foodRecord.getPrice());
您需要参数,而不是属性:
<form action="cost" method="post" name="menu">
<input type="submit" value="Add to cart" name="order"/>
<input type="hidden" value="<%=foodRecord.getFoodId()%>" name="id"/>
<input type="hidden" value="<%=foodRecord.getName()%>" name="name"/>
<input type="hidden" value="<%=foodRecord.getPrice()%>" name="price"/>
</form>
你会在接收端通过request.getParameter(“id”)等获取它们......