JSTL:在每次迭代的foreach中为表单中的隐藏属性设置不同的值
问题描述:
我使用foreach在JSP页面上遍历一个列表。基于这个迭代,我为表格行设置了不同的值。在一列中,有一个超链接用于保存对表单的引用,以便点击此超链接时,表单被提交。这种形式有一个隐藏的属性,它应该在当前迭代中保存列表中的项目的值。 Onclick,提交隐藏属性中具有此列表项的值的表单。JSTL:在每次迭代的foreach中为表单中的隐藏属性设置不同的值
问题是只有列表中的第一个项目在每次迭代中都被设置为隐藏属性。下一个值永远不会被分配。
但是,表格中其他列的情况并非如此。它们在每行/元组中都有新的值。
<c:forEach items="${myList}" var="item">
<!--iterating through this list. Some code here-->
<form action="callthis.jsp" id="request_form" method="post" target="_blank">
<input type="hidden" id="requestxml" name="requestxml" value="${item.requestxml}" /></form>
<td>
<a href="javascript:document.getElementById('request_form').submit();"id="request">
requestXML </a>
</td>
<!--some code here-->
答
你有2种选择:
//1- Only one form
<form action="callthis.jsp" id="request_form" method="post" target="_blank">
<c:forEach items="${myList}" var="item">
<!--iterating through this list. Some code here-->
<input type="hidden" id="requestxml" name="requestxml" value="${item.requestxml}" />
<td>
<a href="javascript:document.getElementById('request_form').submit();"id="request">requestXML</a>
</td>
</c:forEach>
</form>
//2- render multiple forms with different ID using varStatus
<c:forEach items="${myList}" var="item" varStatus="status">
<!--iterating through this list. Some code here-->
<form action="callthis.jsp" id="form_${status.index}" method="post" target="_blank">
<input type="hidden" id="requestxml" name="requestxml" value="${item.requestxml}" /></form>
<td>
<a href="javascript:document.getElementById('form_#{status.index}').submit();"id="request">requestXML</a>
</td>
</form>
</c:forEach>
+0
@Kukeltje你是对的,它被纠正了,谢谢 –
答
您,是因为有多个形式相同的ID,因此它需要第一个唯一的ID分配给每个窗体。请参阅此代码。这仅仅是一个例子。
<c:forEach begin="1" end="5" var="item" varStatus="status">
<form action="callthis.jsp" id="request_form${status.index}" method="post"
target="_blank">
<input type="hidden" id="requestxml" name="requestxml" value="${item}" />
</form>
<td><a
href="javascript:document.getElementById('request_form${item}').submit();"
id="request"> requestXML </a></td>
</c:forEach>
您是否检查过从$ {item.requestxml}获取的值对于每一行都是不同的? –
在我在这里迭代的集合中,值是不同的。 但最近的一个正在打印在我的JSP页面上的表中的所有行中。 –
请使用开发人员工具检查每行的隐藏值。 –