2011-09-30 130 views
10

我想在下面的代码中使用弹簧隐藏标签。这是可能的在下面的代码,我必须写在我的控制器来做到这一点或我所做的是正确的。春季隐藏字段MVC

<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> 

任何帮助将高度appriciated。

感谢

+0

是你的问题是否以及如何将该字段绑定回表单? – tolitius

+0

是的,我认为,你可以看到,我在这里使用循环和隐藏变量将填充循环的运行时间,所以如果我使用那么我认为记录不会填充。所以我的问题是我必须写在我的控制器,以便它与我从循环中获取的值绑定。 – user965884

回答

14

你是在正确的轨道上[根据您的支持bean是什么],但为了在提交的ID绑定为一个隐藏字段自动到“人”的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" /> 

看看春节文档的Hidden Input Tag部分。

2

在这个答案的其余部分,替代“删除”和“deteted”与您正试图执行的操作。例如,“爆炸”,“咬”或“编辑”

您发布的JSP代码中有几个问题。

  1. 对于<td>元素没有关闭标记。
  2. 您的表单发布到“items.html”。这似乎是一个HTML页面。如果是这样,你的表单动作是正确的0%。
  3. 各种形式具有相同的ID,所以getElementById()电话不能正常工作。
  4. href="#"会导致你的页面,当用户点击该链接滚动到顶部。
  5. 您不会向用户识别要删除的记录。

这是我想你想:

<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> 

的片段将张贴到当前弹簧控制器。该帖子中包含两个字段:“活动”,将其标识为删除,“记录”标识要删除的记录。根据您的需求,将添加到form:form标签。

2

我想我解决了这个问题。如果我写这样的

<form:hidden path="id" value="${record}" /> 
这样

输入标签,我可以重新分配隐变量的值,但是当我看着呈现的HTML代码,它是这样

<input type="hidden" value="0" name="record" value="10"/> 

生成属性的值两次,获得我想要的价值是10.但它解决了我的问题。如果有人对此有进一步评论,那么将不胜感激。

+0

使用Spring 1.4.0和它呈现'