簡體   English   中英

如何使用Spring MVC將列表中的項目綁定到formModelAttribute

[英]How do I bind item from List to form modelAttribute using Spring MVC

我已經搜索過並且找不到類似的東西,或者我正在尋找錯誤的東西。 我從控制器返回了一個項目列表,以顯示在我的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來處理保存操作。 這可能嗎? 如果可以的話,有人可以幫助我指出正確的方向。

我不確定如何將列表中的項目綁定到表單嗎?

遵循@tofindabhishek的建議,但仍然希望允許對每一行進行編輯,我最終實現了一個解決方案,該方法帶有行內按鈕,用於保存,編輯和刪除每一行,並將項目ID傳遞回控制器。 這是我的桌子主體。 它使用數據表,引導並打開完整編輯表單的模式。 總共提供了非常豐富的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);
   ...
}
<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/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM