我正在使用foreach迭代JSP页面上的列表。基于此迭代,我为表行设置了不同的值。在一列中,有一个超链接,其中包含对表单的引用,以便单击此超链接,表单将被提交。此表单有一个隐藏属性,该属性应该保存当前迭代中列表中项目的值。在Onclick上,隐藏属性中具有此列表项的值的表单将被提交。
问题在于,只有列表中的第一项在每次迭代中都被设置为此隐藏属性。永远不会分配下一个值。
但是,表格中的其他列不是这种情况。它们在每行/元组中都有新值。
<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-->
答案 0 :(得分:0)
您有两个选择:
//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>
答案 1 :(得分:-1)
您必须为每个表单分配唯一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>