我可以使用带有resultSet的<input type =“hidden”/>标记将值传递给servlet吗?

时间:2013-07-28 12:18:24

标签: html jsp servlets

我正在开发一个应用程序,我在其中显示项目列表,然后针对每一行提供“点击购买”按钮。所以,基本上这里是最终的应用程序应该是什么样的:

ITEM_NUM :::: ITEM_NAME :::: ITEM_PRICE ::::购买?

  1. :::: MY_BOOK :::: 2.99 ::::加入购物车

  2. :::: MY_BOOK2 :::: 9.99 ::::加入购物车

  3. :::: MY_BOOK3 :::: 10.99 ::::添加到购物车
  4. 我能够正确显示此列表。但是,我需要能够为每一行单击ADD TO CART按钮,然后将该行的数据(即item_num,名称,价格)发送到Servlet函数,该函数将该项目添加到购物车。这是我正在使用的代码:

    try {
        Statement s1 = c1.createStatement();
        String q1 = "select itemNum, itemName, itemPrice from part_list";
        ResultSet rset = s1.executeQuery(q1);
        if (!rset.isBeforeFirst()) {
            out.println("<h3> No Items in inventory yet. Everything Sold Out!!!</h3>");
            out.println("</br>");
        } else {
        %>
        <table border="1">
            <tr>
                <th>Item Number </th>
                <th>Item Name </th>
                <th> Item Price </th>
                <th> BUY? </th>
            </tr>
            <form name="inventoryForm" action="cartserv" method="POST">
                <input type="hidden" name="choice" value="addCart">
                <%
    
                    out.println("<br/><br/>");
    
                    while (rset.next()) {
    
                        out.println("<tr>");
                        out.println("<td>" + rset.getInt(1) + "</td><td>" + rset.getString(2) + "</td><td>" + rset.getDouble(4) + "</td><td>");
                        out.println("<td><input type=\"submit\" value=\"CLICK TO BUY\"/></td>");
                %>
                        <input type="hidden" name="iPrice" value="<%=rset.getDouble(4)%>"/>
                        <input type="hidden" name="iName" value="<%=rset.getString(2)%>"/>
                        <input type="hidden" name="iNum" value="<%= rset.getInt(1)%>"
               <%
                    out.println("</tr>");
                    }
                %>
    
            </form>
        </table>
    

    所以我的意图是使用隐藏的输入类型(names = iPrice,iName,iNum)将每行的信息传递给servlet方法。我能够正确显示这些项目的事实表明我的while循环正在工作。但我的问题是,如果我点击第3行的ADD TO CART(即MY_BOOK3),它仍然会将信息传递给第一行的servlet。似乎一旦将第一行数据的值分配给这些隐藏变量,就不会为每一行更新它。

    因此,我的问题是如何将item_name,item_num,item_price传递给与按下ADD TO CART的行对应的servlet?

1 个答案:

答案 0 :(得分:0)

您可以访问下一页的值。因此,如果他们点击按钮并将其带到购物车页面,您就可以收集所有您想要的信息。

喜欢这个

$iPrice = $_POST['iPrice']
$iName = $_POST['iName']
$iNum = $_POST['iNum']

然后您可以在页面的任何位置使用这些变量。

谢谢, 约什