我是 Spring Web MVC 的新手,正在开发 Web 应用程序。 在某些情况下,我需要将数据值传递给 Controller。 (注意:这里的数据值是bean对象的一个值)
Item Number Item Name Description Price
Item1018 Item1 Desc1 5.0 Add item to Cart
Item1019 Item2 Desc2 2.0 Add item to Cart
如上图所示,如果我点击“将商品添加到购物车”,相应的商品编号应传递给 Controller 。
View 菜单.jsp
<c:forEach items="${model.itemlists}" var="item">
<tr>
<c:if test = "${item.status == 'available'}">
<td><c:out value="${item.itemNo}"/> </td>
<td><c:out value="${item.itemName}"/></td>
<td><c:out value="${item.description}"/></td>
<td><c:out value="${item.price}"/></td>
<td><a href="<c:url value="additemtocart">
<c:param name='itemNumber' value="${item.itemNo}"/>
</c:url>">Add item to Cart</a> </td>
</c:if>
</tr>
</c:forEach>
CustomerController.java 方法
@RequestMapping(value = "additemtocart",method = RequestMethod.GET)
public ModelAndView addItemToCart(@RequestParam("itemNumber") String itemno ) throws ClassNotFoundException, SQLException {
System.out.println("Username test in customer controller: "+userName);
}
代码有效并且能够传递值。但根据 GET 和 POST 方法的标准(描述 here ),我认为我做错了。请建议是否有任何其他方法可以将数据传递给 POST 方法。请建议我。提前致谢
(第一次发帖,如有错误请多多包涵)
最佳答案
将所有内容放入表单中(使用 Spring 的 <form:form>
标记)。这会将表单发布到显示它的相同 URL。如果你想 POST 到不同的 URL,那么设置 action
表单的属性。
更改您的 Add item to Cart
链接到提交按钮,因为您不应该使用 GET 更改数据。您可以根据需要设置样式,并根据需要使其看起来像一个链接。
你的按钮应该是这样的:
<button type=submit name=itemNumber value=xxx>Add item to Cart</button>
在你的 Controller 中,你应该有一个带有请求映射的处理程序方法,如下所示:
@RequestMapping(value="additemtocart", method=RequestMethod.POST, params={"itemNumber"})
然后您应该使用 Post-Redirect-Get 模式重定向回产品列表。请参阅 Spring MVC 文档中的 flashAttributes。
关于java - 将对象数据从 JSP 传递到 Spring Controller Post 方法而不是 GET 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27010706/