将所选对象从JSP发送到Servlet

时间:2014-02-19 03:44:26

标签: java jsp servlets

我是Java EE的初学者,我已经开始实施一个小型在线书籍商店购物车示例,以学习和应用基本概念。 当用户搜索书籍时,它会显示建议书籍列表,然后用户通过单击“添加到购物车”按钮开始添加到购物车中。

我使用了隐藏的输入类型来发送它。

下面是我的JSP代码。

  <% 
    List<BookDetails> newlist = new ArrayList<BookDetails>();    
    newlist = (List)session.getAttribute("currentSession");
  %>
    <table>
       <form name="DisplayResult" action="addToCartServlet">
    <tr>
       <td><b>Book</b></td><td><b>Price</b></td>
    </tr>

  <%
    for (int i = 0; i < newlist.size(); i++) 
    {
       BookDetails book1 =newlist.get(i);
  %>
  <tr>
   <td><%=book1.getBookName()%></td>
   <td><%=book1.getPrice()%></td>
   <td>
       <input type="hidden" name="ISBN" value="<%=newlist.get(i).getISBN()%>">
       <input type="submit" name="action" value="Add to Cart">
  </td>
  </tr>
  <% }%>
  </form>
  </table>  

我通过servlet访问它,如下所示。     String isbn = request.getParameter(“ISBN”);

但它每次只取任何按钮点击的第一个搜索结果值。 如何为每本书获取每个唯一的ISBN?

2 个答案:

答案 0 :(得分:1)

每行需要表单才能为每行传递不同的数据


查看

答案 1 :(得分:1)

@Jigar Joshi说得对,用同样的方法看起来像。

文本框如下:

<form:input path="contacts[${status.index}].book" /> 

    <tr>
      <td align="center">${status.count}</td>
      <td><input name="contacts[${status.index}].book" value="${contact.book}"/></td>
      <td><input name="contacts[${status.index}].price" value="${contact.price}"/></td>
   </tr>
线的解释是:

contacts[${status.index}].book 

它将按如下方式生成每一行:

contacts[0].book // mapped to first item in contacts list
contacts[1].book// mapped to second item in contacts list
contacts[2].book// mapped to third item in contacts list
行的解释是编码格式:

<form:input path="contacts[${status.index}].book" />

然后,而不是将其转换为以下HTML代码:

<input name="contacts[0].book" />
<input name="contacts[1].book" />
<input name="contacts[2].book" />

将其转换为以下内容:

<input name="contacts0.book" />
<input name="contacts1.book" />
<input name="contacts2.book" />