春季MVC隐藏的领域

时间:2011-09-30 08:49:19

标签: java spring spring-mvc

我想在下面的代码中使用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>

任何帮助都会受到高度关注。

谢谢

3 个答案:

答案 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代码有几个问题。

  1. <td>元素没有关闭标记。
  2. 您的表单发布到“items.html”。这似乎是一个HTML页面。如果是这样,您的表单操作正确0%。
  3. 每个表单都有相同的ID,因此getElementById()调用永远无法正常工作。
  4. href="#"会在用户点击链接时将您的网页滚动到顶部。
  5. 您不会向用户标识要删除的记录。
  6. 这是我认为你想要的:

    <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,但它解决了我的问题。如果有人对此有进一步的评论,那将不胜感激。