Jsp 将动态复选框的值发送到 servlett



我在html/jsp/servlett编程领域是全新的。实际上,我正在开发一个创建动态复选框的项目。它们中的每一个都应该具有不同的值。

<c:forEach items="${sessionScope.camlist}" var="cam">
<form id="updatePermission" method="post" action="<%=request.getContextPath() %>/PermissionHandling?operation=update_permissions&id=${cam.kameraid}" >
<table>
<td>${cam.kameraid}</td>
<script>
console.log("${cam.kameraid}");
</script>
<td>'${cam.standort}'</td>
<td>'${cam.url}'</td>
<td>${cam.aufnahmeinterval}</td>
<td>
<c:set var="checked" value="false"/>
<c:forEach items="${sessionScope.permissionList}" var="perm">
<c:if test="${perm.kameraid eq cam.kameraid}">
<input type="checkbox" name="selection" checked="checked" value="${cam.kameraid}" onClick="callServlett()">
<c:set var="checked" value="true"/>
<c:set var="continueExecuting" scope="request" value="false"/>
</c:if>
</c:forEach> 
<c:if test="${checked eq false}">
<input type="checkbox" name="selection" value="${cam.kameraid}" onClick="callServlett()">
</c:if>
</td>                
</table>
</form>
</c:forEach>
</div>
</section>
<script>
function callServlett()
{
document.getElementById("updatePermission").submit();
}
</script>

因此,通过这样做,我得到了一个表格,其中每行的复选框都会根据用户是否具有权限进行初始化。 当复选框被单击修改时,我想将相机ID的calue提交到我的servlett,这将处理其余的工作。

Servlett:
String[] selections = request.getParameterValues("selection");

选择总是"3",除非我轻舔第一个复选框,然后它是空的。

谁能告诉我为什么这段代码没有按我预期工作?

您需要将<form>标签放在forEach循环之外。如果你把每个循环放在里面,将创建新的表单标签,它可能无法按你想要的方式工作。

<form id="updatePermission" method="post" action="<%=request.getContextPath() %>/PermissionHandling?operation=update_permissions&id=${cam.kameraid}" >
<c:forEach items="${sessionScope.camlist}" var="cam">
<!-- html code -->
</c:forEach>
</form>

与其每次点击都调用servletcheckbox保留一个按钮并在单击按钮时调用servlet。这将减少从浏览器到服务器的迭代次数。

最新更新