【发布时间】:2016-07-13 05:51:26
【问题描述】:
关于 Spring MVC 和 JSP。
我的 JSP 遍历用户列表。每个用户都显示在表格的一行中。
每一行都有一个编辑和一个删除按钮。
当点击任一按钮时,我想调用关联的控制器方法,传递关联行的用户模型。
为此,我在循环中添加了一个表单。但是,当我单击按钮时,控制器中的用户模型值始终为空。
- 注意:我知道我可以通过使用模型的 ID 来做到这一点,但我是 试图通过模型本身。如果不可能,我想了解为什么不这样做。
这是我的控制器方法:
@RequestMapping(value = "/user/delete", method = RequestMethod.POST)
public ModelAndView deleteUser(@ModelAttribute("user") User user) {
....
}
这是我的 JSP
<c:forEach var="user" items="${users}">
<form:form action="/" id="user${user.id}Form" method="post" commandName="user">
<tr>
<td class="col-xs-8 col-sm-8 col-md-8 col-lg-8">${user.id}: ${user.firstName} ${user.lastName}</td>
<td class="col-xs-4 col-sm-4 col-md-4 col-lg-4">
<div class="btn-toolbar pull-right" role="btn-toolbar">
<div class="btn-group" role="group">
<input class="btn btn-default btn-default"
type="Submit"
value="Edit"
id="${user.id}"
onclick="document.getElementById('user${user.id}Form').action='${pageContext.request.contextPath}/user/updateLoad'">
</div>
<div class="btn-group" role="group">
<input class="btn btn-default btn-default"
type="Submit"
value="Delete"
id="${user.id}"
onclick="document.getElementById('user${user.id}Form').action='${pageContext.request.contextPath}/user/delete'">
</div>
</div>
</td>
</tr>
</form:form>
</c:forEach>
请问我需要做什么才能将用户模型传递给控制器?
如果我执行以下操作,我可以获得控制器中的值,但是,由于开销,我认为这不是一个实用的解决方案。
<c:forEach var="user" items="${users}">
<form:form action="/" id="user${user.id}Form" method="post" commandName="user">
<input type="hidden" name="id" value="${user.id}"/>
<input type="hidden" name="firstName" value="${user.firstName}"/>
<input type="hidden" name="lastName" value="${user.lastName}"/>
<input type="hidden" name="phone" value="${user.phone}"/>
<input type="hidden" name="address" value="${user.address}"/>
【问题讨论】:
-
您可以将对象从 HTML 传递到 servlet?
-
你为什么要这样做?使用 id 从服务或存储库再次获取对象似乎更好,以确保您拥有对象的最新“版本”。
-
更多的是理解为什么它不能完成——如果确实如此的话。我知道我可以使用 Id 并进行查找。谢谢。
标签: java spring jsp spring-mvc