我想在下面的代码中使用spring hidden标签。这可能在下面的代码中,我必须在我的控制器中写这样做或我正在做的是正确的。
<c:forEach var="record" items="${records}">
<tr>
<td>
<form:form id="myForm" action="list.html" method="post">
<input type="hidden" name="record" value="${record}" />
<a href="#" onclick="document.getElementById('myForm').submit();">Submit</a>
</form:form>
</td>
</tr>
</c:forEach>
任何帮助都会受到高度关注。
谢谢
答案 0 :(得分:14)
你是在正确的轨道[取决于你的支持bean是什么],但是为了将ID作为隐藏字段在提交上自动绑定到“Person”bean(在这个例子中) ),你会做类似的事情:
<c:forEach var="person" items="${persons}" varStatus="status">
<tr>
<c:set var="personFormId" value="person${status.index}"/>
....
<form id="${personFormId}" action="${deleteUrl}" method="POST">
<input id="id" name="id" type="hidden" value="${person.id}"/>
</form>
<td>${person.firstName}</td>
<td>${person.lastName}</td>
....
</tr>
</c:forEach>
如果你想渲染隐藏字段,你可以使用form:hidden
标记:
<form:hidden path="id" />
查看Spring文档的Hidden Input Tag部分。
答案 1 :(得分:2)
在本答复的其余部分中,将“删除”和“已检测”替换为您尝试实施的操作。例如“爆炸”,“咬”或“编辑”
您发布的JSP代码有几个问题。
<td>
元素没有关闭标记。getElementById()
调用永远无法正常工作。href="#"
会在用户点击链接时将您的网页滚动到顶部。这是我认为你想要的:
<c:forEach var="record" items="${records}">
<tr>
<td>
<form:form method="post">
<input type="hidden" name="activity" value="delete"/>
<input type="hidden" name="record" value="${record}"/>
<a href="javascript:this.form.submit()">Delete ${record}</a>
</form:form>
<td>
</tr>
</c:forEach>
该片段将发布到当前的弹簧控制器。帖子中包含两个字段:“活动”将其标识为删除,“记录”标识要删除的记录。根据您的需求,将action="some url"
添加到form:form
代码。
答案 2 :(得分:2)
我想我解决了这个问题。如果我写这样的输入标签
<form:hidden path="id" value="${record}" />
通过这种方式,我可以重新分配隐藏变量的值,但是当我查看渲染的html代码时,它就像这样
<input type="hidden" value="0" name="record" value="10"/>
生成两次value属性并获取我想要的值10,但它解决了我的问题。如果有人对此有进一步的评论,那将不胜感激。