gpt4 book ai didi

spring - ModelAttribute 在 Spring MVC 的 Controller 中返回空值

转载 作者:行者123 更新时间:2023-12-05 00:24:40 27 4
gpt4 key购买 nike

好的,是时候寻求帮助了;我正在向我的 jsp 发送(购物)购物车 ModelAttribute,允许用户编辑数量,当模型 POST 到 Controller 时,除了可编辑(数量)字段外,其他字段为空。我已经研究了几天类似的问题,但没有什么是匹配的。我正在使用 Spring 3.1。

这是我在 GET 和 POST 上的 Controller :

@Controller
public class CartController {

@Autowired
private Cart cart;

@RequestMapping(value = "/cart", method = RequestMethod.GET)
public String showCart(Model model) {
logger.debug("CartController.showCart() Cart: {}", this.cart);
model.addAttribute(cart);
return "cart/cart";
}

和 POST
   @RequestMapping(value = "/cart", method = RequestMethod.POST, params = "update")
public String update(@ModelAttribute("cart") Cart cart, BindingResult result, Model model) {
logger.debug("CartController.update() Cart: {}", cart);
return "cart/cart";
}

我的jsp:
<div class="container MainContent">
<form:form method="POST" modelAttribute="cart">
<fieldset>
<legend>Cart</legend>
<table class="table">
<thead>
<tr>
<th>Product Name</th>
<th>Quantity</th>
<th>Product Price</th>
</tr>
</thead>
<tbody>
<c:forEach items="${cart.cartDetails}" var="cartDetail" varStatus="status">
<tr>
<td>${cartDetail.product.name}</td>
<td><form:input path="cartDetails[${status.index}].quantity" size="1" /></td>
<td>${cartDetail.price}</td>
</c:forEach>
<tr>
<b><td colspan="2" align="right"><spring:message code="order.total" /></b>
</td>
<td>${cart.totalCartPrice}</td>
</tr>
</tbody>
</table>
</fieldset>
<div></div>
<button id="order" name="order">
<spring:message code="button.order" />
</button>
<button id="update" name="update">
<spring:message code="button.update" />
</button>
</form:form>
</div>

以及之前在 GET 上的购物车日志结果:

CartController.showCart() Cart: Cart [cartDetails=[CartDetail product=com.Product@c26440[name=My Name], quantity=1]], totalCartPrice=10.00]



并在 jsp 中将数量从 1 更新为 3,然后 POST 到 Controller :

CartController.update() Cart: Cart [cartDetails=[CartDetail [product=null, quantity=3]], totalCartPrice=null]



我在这里和 Spring 论坛上阅读了几篇类似的帖子,并尝试了不同的建议解决方案,但没有成功。我编辑的数量结果似乎正确地绑定(bind)到了对象,但为什么其他人没有呢?

最佳答案

假设您的 Form 对象中有所有必要的字段;

您必须指定表单字段并用您的数据填充值。

<td>${cartDetail.product.name}</td> 

只会将结果打印到屏幕上。如果要将其绑定(bind)到表单,则必须将其放入 spring 表单输入中,例如:
<form:input path="productName"  value="${cartDetail.product.name}"/> 

如果您不希望它可编辑,则可以将其放入隐藏字段,但最后您必须将其放入 jsp 的表单元素中,并在表单 POJO 中有相应的字段

关于spring - ModelAttribute 在 Spring MVC 的 Controller 中返回空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25751254/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com