2012-12-17 67 views
0

今天我堅持使用POST方法的春天形式,它沒有給我想要的控制器張貼項目。這是我的代碼。春天MVC @ModelAttribute越來越充實體實體

Controller.java

@Controller 
@RequestMapping("/cart") 
public class CartController extends CommonController 
{ 
    @RequestMapping(value = "/add", method = RequestMethod.POST) 
    public ModelAndView addCart(@ModelAttribute("productList") Item item, BindingResult result,Model model){ 
     System.out.println(item.getId()); /// <-- doesn't gives me the ID 
     return new ModelAndView("cart"); 
    } 
} 

ProductList.jsp

/// Loop through the products of search itemlist and generates the forms with the correct items 
<c:forEach var="item" items="${productList.items}" varStatus="status"> 
        ${item.name} 
     <div class="addCart"> 
     <c:url value="/cart/add.html" var="addURL" /> 
      <form:form method="POST" action="${addURL}" modelAttribute="productList"> 
       <form:hidden path="items[${status.index}].id"/> 
       <input type="submit" class="addCartBtn" value="Add to cart" /> 
      </form:form> 
     </div> 

BackingBean.java

public class SearchForm implements Serializable 
{ 
    private Collection<Item> items; 
    private String term; 
    // getters and setters 
} 

的$ {} productList的是通過所有的循環backingbean項目。

我真的不知道是什麼問題,爲什麼它沒有給我正確的數據,它通過POST。 非常感謝。

回答

2

隱蔽你的春天:隱藏標籤正常HTML隱藏標籤:

<form:hidden path="items[${status.index}].id"/> 

<input type="hidden" name="id" value="${item.id}"/> 
+0

予以更換,以你說什麼,但仍然可以通過郵寄方式沒有得到該項目。該項目仍然沒有內容。 – Skyverian

+0

而不是name =「item.id」,使用name =「id」。我更新了答案。 –

+0

它現在填寫項目中的項目ID,但它沒有獲取所有項目數據。或者我只是誤解@ModelAttribute屬性:(。 – Skyverian