JSTL:在每次迭代时在foreach内的表单中为隐藏属性设置不同的值

时间:2017-09-15 08:02:59

标签: java html jsp jsf jstl

我正在使用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-->

2 个答案:

答案 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${it‌​em}').submit();"
        id="request"> requestXML </a></td>
</c:forEach>