2014-11-21 33 views
1

我已經搜索並找不到任何相似的東西,或者我正在處理錯誤的東西。我從我的控制器返回一個項目列表以顯示在我的jsp中。在我的JSP表,我想對每個項目一排我的列表中,這樣的事情:如何從列表中綁定項目以使用Spring MVC形成modelAttribute

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

那麼我的控制器將有handleing保存行動RequestMethod.POST。這可能嗎?如果有的話可以幫助我指出正確的方向。

這是可能的我不知道如何將列表中的項目綁定到窗體。

+0

是否要爲每一行保存按鈕,並單獨保存每一行。 – 2014-11-21 01:19:37

+0

是的,這將是對項目(產品)的有限的一組字段進行「快速編輯」。爲了讓最終用戶更有效率,我最終需要通過AJAX進行POST。從基本功能開始,並遵循漸進式增強技術。 – brad12s 2014-11-21 04:10:21

+0

[this](http://viralpatel.net/blogs/spring-mvc-multi-row-submit-java-list/)可能會幫助你 – 2014-11-21 04:15:34

回答

3

繼從@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> 

screenshot of table

這是在我的崗位處理的,從這裏就可以看出我是如何使用的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
<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/

+0

不完全是我想要的。由於整個列表必須保存,似乎效率低下。感謝這個例子。也許,在這個例子之後,我將已經改變的對象的id傳回給控制器。 - 我會稍後回來 – brad12s 2014-11-21 04:38:43

相關問題