bra*_*12s 5 spring jsp spring-mvc modelattribute
好的,是时候寻求帮助了;我正在向我的 jsp 发送一个(购物)购物车 ModelAttribute,允许用户编辑数量,当模型 POST 到控制器时,除了可编辑(数量)字段之外,其他字段均为空。我已经研究了几天类似的问题,但没有任何匹配。我使用的是spring 3.1。
\n\n这是我的 GET 和 POST 控制器:
\n\n@Controller\npublic class CartController {\n\n @Autowired\n private Cart cart; \n\n @RequestMapping(value = "/cart", method = RequestMethod.GET) \n public String showCart(Model model) {\n logger.debug("CartController.showCart() Cart: {}", this.cart);\n model.addAttribute(cart);\n return "cart/cart";\n }\nRun Code Online (Sandbox Code Playgroud)\n\n和邮寄
\n\n @RequestMapping(value = "/cart", method = RequestMethod.POST, params = "update")\n public String update(@ModelAttribute("cart") Cart cart, BindingResult result, Model model) {\n logger.debug("CartController.update() Cart: {}", cart); \n return "cart/cart";\n }\nRun Code Online (Sandbox Code Playgroud)\n\n我的jsp:
\n\n<div class="container MainContent">\n <form:form method="POST" modelAttribute="cart">\n <fieldset>\n <legend>Cart</legend>\n <table class="table">\n <thead>\n <tr>\n <th>Product Name</th>\n <th>Quantity</th>\n <th>Product Price</th>\n </tr>\n </thead>\n <tbody>\n <c:forEach items="${cart.cartDetails}" var="cartDetail" varStatus="status">\n <tr>\n <td>${cartDetail.product.name}</td> \n <td><form:input path="cartDetails[${status.index}].quantity" size="1" /></td> \n <td>${cartDetail.price}</td>\n </c:forEach>\n <tr>\n <b><td colspan="2" align="right"><spring:message code="order.total" /></b>\n </td>\n <td>${cart.totalCartPrice}</td>\n </tr>\n </tbody>\n </table>\n </fieldset>\n <div></div>\n <button id="order" name="order">\n <spring:message code="button.order" />\n </button>\n <button id="update" name="update">\n <spring:message code="button.update" />\n </button>\n </form:form>\n</div>\nRun Code Online (Sandbox Code Playgroud)\n\n以及 GET 之前购物车的日志结果:
\n\n\n\n\nCartController.showCart() 购物车:购物车 [cartDetails=[CartDetail\n Product=com.Product@c26440[name=我的名字],\n 数量=1]],totalCartPrice=10.00]
\n
在 jsp 中将数量从 1 更新为 3 后,然后 POST 到控制器:
\n\n\n\n\nCartController.update() 购物车:购物车 [cartDetails=[CartDetail\n [产品=null,数量=3]],totalCartPrice=null]
\n
我在这里和 Spring 论坛上阅读了几篇类似的文章,并尝试了不同的建议解决方案,但没有成功。看起来我编辑的数量结果已正确绑定到对象,但为什么 \xe2\x80\x99 不是其他的?
\n假设您的 Form 对象中有所有必需的字段;
您必须指定表单字段并用您的数据填充值。
<td>${cartDetail.product.name}</td>
Run Code Online (Sandbox Code Playgroud)
只会将结果打印到屏幕上。如果您想将其绑定到您的表单,您必须将其放入弹簧表单输入中,例如:
<form:input path="productName" value="${cartDetail.product.name}"/>
Run Code Online (Sandbox Code Playgroud)
如果您不希望它可编辑,那么您可以将其放入隐藏字段,但最终您必须将其放入 jsp 中的表单元素中,并在表单 POJO 中拥有相应的字段
| 归档时间: |
|
| 查看次数: |
18317 次 |
| 最近记录: |