在提交请求时,控件总是选择 GET 方法而不是 POST

on submitting request control is always picking up GET method and not POST

我正在尝试使用 spring3 hibernate3 和 tiles2。

   @RequestMapping(value = "/capturedetails", method = RequestMethod.GET)
   public String getcapturedetails(Model model, HttpSession session,
                 HttpServletRequest request) {

Customer customer=new Customer();
          model.addAttribute("customer", customer);
          return "capturedetails";
   }

   @RequestMapping(value = "/capturedetails", method = RequestMethod.POST)
   public String addcustomer(
                 @ModelAttribute("Customer") Customer customer, Model model,
                 HttpSession session, HttpServletRequest request) {

                       custBarcodeService.saveCustomer(customer);

                       model.addAttribute("customer ", new Customer());
                       return "capturedetails";
   }

提交请求控件后,它总是选择 GET 方法而不是 POST... 我该如何解决这个问题?

我过去也遇到过类似的问题。在我的例子中,我试图从 post 人发出一个 POST 请求,主体是 json 到一个端点,该端点在控制器端接收 x-www-form-urlencoded 格式的数据。

请注意,如果您在 post 控制器方法中使用 @ModelAttribute,它会以 x-www-form-urlencoded 格式接收数据。如果是这种情况,那么可能的解决方案是

  1. 使用@RequestBody:

    使post请求方法接收json数据
    @RequestMapping(value = "/capturedetails", method = RequestMethod.POST)
    public String addcustomer(@RequestBody Customer customer, Model model,
             HttpSession session, HttpServletRequest request) {
    
                   custBarcodeService.saveCustomer(customer);
    
                   model.addAttribute("customer ", new Customer());
                   return "capturedetails";
    }
    
  2. 从 rest 客户端以 x-www-form-urlencode 格式发送数据

我认为您可能打开了多个表单元素...检查您的磁贴布局文件并删除多个表单元素,然后尝试 post。 因为同样的解决方案也解决了我的问题。