为什么我只获得foreach循环java企业中的最后一行值

时间:2016-11-29 13:26:50

标签: java-ee

我是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> 

2 个答案:

答案 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”)等获取它们......