这是我的代码..
<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。无法找到方法。请指导我
答案 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检索相同的产品并可以访问详细信息。