我已经搜索过,无法找到类似的东西,或者我正在寻找错误的东西。我从我的控制器返回一个项目列表,以便在我的jsp中显示。在我的jsp表中,我希望列表中的每个项目都有一行,如下所示:
<tbody>
<c:forEach items="${productList}" var="product" varStatus="status">
<tr>
???? This next line is seudo-code. I dont know how to bind the item to form ???
<form:form method="post" modelAttribute="${productList}[status.index]">
<td><form:input path="price" class="input-mini" type="text" /></td>
<td><button id="save" name="save"></td>
</form
</tr>
</c:forEach>
</tbody>
然后我的控制器会有一个RequestMethod.POST来处理保存操作。这可能吗?如果是这样,有人可以帮我指出正确的方向。
这是否可能我不知道如何将列表中的项绑定到表单。
答案 0 :(得分:3)
根据@tofindabhishek的建议并仍然希望允许每行编辑,我最终实现了一个带有行内按钮的解决方案,用于保存,编辑和删除每一行,并将文章ID传递回控制器。这是我的桌子。它使用数据表,bootstrap并打开完整编辑表单的模态。总共提供了一个非常丰富的CMS IMO:
<tbody>
<c:forEach items="${productManagerForm.products}" var="product" varStatus="status">
<c:url value="/product/detail/${product.id}" var="detailUrl" />
<tr>
<td><a href="${detailUrl}">${product.id}</a> <form:hidden path="products[${status.index}].id" value="${product.id}" /></td>
<td><form:input path="products[${status.index}].name" class="input-xlarge" type="text"/></td>
<td><form:input path="products[${status.index}].price" class="input-mini" type="text" /></td>
<td><form:input path="products[${status.index}].shippingPrice" class="input-mini" type="text" /></td>
<td><button id="save" name="save" value="${product.id}" class="btn btn-success"><i class="fa fa-save"></i> Save </button>
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#editProduct${product.id}"><i class="fa fa-edit"></i> Edit</button>
<button id="delete" name="delete" value="${product.id}" class="btn btn-danger"><i class="fa fa-trash-o"></i></button>
</td>
</tr>
</c:forEach>
</tbody>
这是我的POST处理程序,你可以看到我如何使用RequestMapping映射处理程序和RequestParam来绑定Id:
@RequestMapping(method = RequestMethod.POST, params = "delete")
public String deleteProduct(@RequestParam(value = "delete") int deleteProductId) {
Product product = productService.findProduct(deleteProductId);
productService.deleteProduct(product);
...
}
答案 1 :(得分:1)
<tbody>
<form:form method="post" modelAttribute="${productList}">
<c:forEach items="${productList}" var="product" varStatus="status">
<tr>
<td><form:input path="{productList[[${status.index}].price}" class="input-mini" type="text" /></td>
<td><button id="save" name="save"></td>
</form
</tr>
</c:forEach>
</tbody>
此代码将提交表单以及产品列表,在帖子中您需要编写逻辑以保存产品列表。 如需进一步帮助,请参阅以下链接。
(http://viralpatel.net/blogs/spring-mvc-multi-row-submit-java-list/)