如何从jsp获取带有所选复选框的表行值到servlet

时间:2017-01-28 11:49:04

标签: java jsp servlets

这是我的代码..

        <form action="order" method="post">
    <table border="1" cellpadding="15" cellspacing="0">
            <tr>
                <th>Product</th>
                <th>rate</th>
                <th>Quantity</th>
                <th>Manufacture Name</th>
                <th>Select Items</th>
            </tr>
            <c:forEach var="entry" items="${productModel.entries}">
                <tr>
                    <td>${entry.pname }</td>
                    <td>${entry.rate }</td>
                    <td>
                        <select name = "quantity" style="width: 90px; ">
                                <c:set var="total" value="${entry.currentstock}" />
                            <c:forEach begin="0" end="${total-1}" step="1" varStatus="loop">
                                <option>${loop.count}</option>
                            </c:forEach>
                        </select>
                    </td>
                    <td>${entry.manu_name }</td>
                    <td><input type="checkbox"></td>
                </tr>
            </c:forEach>
        </table>
        <input type="submit" name="order" value="Confirm Order">
        </form>

我想获取所选复选框,然后将这些值提供给servlet。无法找到方法。请指导我

1 个答案:

答案 0 :(得分:0)

问题在于你的HTML:

<option>${loop.count}</option>

应该是

<option value="${loop.count}">${loop.count}</option>

所选value标记的option属性将提交给服务器(servlet)。
这是select-option标记组合的默认行为:

<select name="select1">
    <option value="value1">label1</option>
    <option value="value2">label2</option>
</select>

编辑:

为了提交其他值,仅显示它们是不够的

<td>${entry.pname }</td>

您需要添加表单字段元素,例如input

<td>${entry.pname}<input type="hidden" name="name" value="${entry.pname}"/></td>

如果您想让字段可编辑,type可以是text

<td><input type="text" name="name" value="${entry.pname}"/></td>

对所有其他表行也应该这样做。

另外,为了有一个表格,我建议每一行都是一个表格。而不是复选框,您可以有提交按钮。

<table border="1" cellpadding="15" cellspacing="0">
        <tr>
            <th>Product</th>
            <th>rate</th>
            <th>Quantity</th>
            <th>Manufacture Name</th>
            <th>Select Items</th>
        </tr>
        <c:forEach var="entry" items="${productModel.entries}">
            <tr>
              <form action="order" method="post">
                ...
                <td><input type="submit" name="order" value="Confirm Order"></td>
              </form>
            </tr>
        </c:forEach>
    </table>

    </form>

以上解决方案是提交单行。

但您希望用户能够一次订购多种产品 因此,更好的方法是仅使用产品ID,您在表单生成时就知道了。 表单/行包含带产品ID的隐藏输入和带数量的选择 提交后,您从DB检索相同的产品并可以访问详细信息。