我有一个带有表格的JSP页面:
<table class="table table-hover">
<tbody>
<thead class="thead-light">
<th scope="col">#</th>
<th scope="col">Number</th>
<th scope="col">Tariff</th>
<th scope="col">Cost</th>
<th scope="col">Action</th>
</thead>
<tbody>
<c:forEach items="${contractsList}" var="contract" varStatus="loop">
<thead>
<th scope="col">${loop.index + 1}</th>
<th>${contract.number}</th>
<th>${contract.tariffName}</th>
<th>TODO</th>
<th><input type="submit" value="Block"></th>
</thead>
</c:forEach>
</tbody>
</table>
如何在每一行中创建一个按钮,发送包含此行数据的POST请求?例如,我按下第2行中的按钮,它将发布请求发送到某个具有该行合同数量的URL作为请求参数。我尝试添加<form>
代码,但它会破坏表格的格式,对我而言,在这种情况下,如何将合同号码作为请求参数传递不清楚。
更新:我这样做了
<tr onclick="showContract('${contract.contractId}')" style="cursor: pointer;">
<script>
function showContract(id) {
var form = document.createElement('form');
document.body.appendChild(form);
form.method = 'post';
form.action = '/client/show_contract';
var input = document.createElement('input');
input.type = 'hidden';
input.name = 'contractId';
input.value = id;
form.appendChild(input);
form.submit();
}
</script>
答案 0 :(得分:0)
最简单的方法是将表单标记放在循环中。
<c:forEach items="${contractsList}" var="contract" varStatus="loop">
<form action="..YourServlet" method="post">
<thead>
<th scope="col">${loop.index + 1}</th>
<th>${contract.number}</th>
<th>${contract.tariffName}</th>
<th>TODO</th>
<th><input type="submit" value="Block"></th>
</thead>
<input type="hidden" name="cnumber" value="${contract.number}"/>
<input type="hidden" name="ctarrif" value="${contract.tarrifName}"/>
</form>
</c:forEach>
然后在你的servlet中获取你通常会做的参数:
String contractNumber = request.getParameter ("cname");
String tarrifName = request.getParameter ("ctarrif");