Java 将对象数据从JSP传递到Spring控制器Post方法而不是GET方法

Java 将对象数据从JSP传递到Spring控制器Post方法而不是GET方法,java,spring,jsp,spring-mvc,Java,Spring,Jsp,Spring Mvc,我是SpringWebMVC的新手,正在开发一个Web应用程序。 在这种情况下,我需要将数据值传递给控制器。 (注意:这里的数据值是bean对象的值) 如上图所示,如果我单击“将项目添加到购物车”,相应的项目编号应传递给控制器 <a href="javascript:addItemToCart(${item.itemNo},"passURL");">Add to cart item?</a> viewmenu.jsp CustomerController.java

我是SpringWebMVC的新手,正在开发一个Web应用程序。 在这种情况下,我需要将数据值传递给控制器。 (注意:这里的数据值是bean对象的值)

如上图所示,如果我单击“将项目添加到购物车”,相应的项目编号应传递给控制器

<a href="javascript:addItemToCart(${item.itemNo},"passURL");">Add to cart item?</a>
viewmenu.jsp


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方法(如上所述)的标准,我认为我做错了。请建议是否有其他方法将数据传递到POST方法。请推荐我。提前谢谢


(这是我第一次在这里发布,如果有任何错误,请原谅)

是的,您是正确的,您应该使用POST请求在服务器上执行任何类型的DML操作。GET应仅用于数据获取操作。原因是为了避免使用F5或双击submit按钮进行双重表单提交。您应该使用method=RequestMethod.POST而不是GET。请参阅“添加到购物车”按钮,以便单击该按钮,可以进行Ajax调用并在控制器中使用适当的请求映射

<a href="javascript:addItemToCart(${item.itemNo},"passURL");">Add to cart item?</a>

将所有内容放入表单中(使用Spring的
标记)。这将把表单发布到显示表单的同一URL。如果要发布到其他URL,请设置表单的
action
属性

将您的
添加项目到购物车
链接更改为提交按钮,因为您不应使用GET更改数据。你可以随心所欲地设计它的样式,如果你想的话,可以让它看起来像一个链接

您的按钮应如下所示:

<button type=submit name=itemNumber value=xxx>Add item to Cart</button>
@RequestMapping(value="additemtocart", method=RequestMethod.POST, params={"itemNumber"})

然后,您应该使用Post Redirect Get模式重定向回产品列表。请参阅SpringMVC文档中的flashAttributes

要我将整个链接更改为按钮吗?点击提交按钮,如何调用值为“additemtocart”的handler方法。你也能指定那个吗?编辑了我的答案。确保每件事都以一种形式进行。这将在页面显示的URL处向服务器发出POST请求。您可以为不同的URL更改表单的
action
属性。
@RequestMapping(value="additemtocart", method=RequestMethod.POST, params={"itemNumber"})