0

今日、私は、投稿されたアイテムをコントローラーに渡さない POST メソッドを使用したスプリングフォームにこだわっています。これが私のコードです。

コントローラー.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} は、すべてのアイテムをループするバッキング Bean です。

POSTを通過した正しいデータが得られない理由が何であるかはよくわかりません。どうもありがとう。

4

1 に答える 1

2

spring:hiddenタグを通常のhtml非表示タグに変換します。

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

<input type="hidden" name="id" value="${item.id}"/>
于 2012-12-17T14:26:23.003 に答える