【问题标题】:How to send ajax request data as a class to Spring mvc controller?如何将 ajax 请求数据作为类发送到 Spring mvc 控制器?
【发布时间】:2016-07-09 10:29:18
【问题描述】:

我正在向 Spring MVC 控制器发送 AJAX 请求,如下所示:

var filters = {
    visual: visual, 
    Name: params['Name'], 
    Address: params['Address'], 
    documentType: params['documentType'], 
    itemQualifier: getItemQualifier(),
    itemIdentifier: params['itemIdentifier'], 
    currency: getCurrency(), 
    sellSide: getSellSide()
};

$.ajax({                                                                    
    type: "POST",
    url: "/reports/savefilters",
    data: filters,
    success: function(response) {
        alert('filters saved successfully: ' + response);
    },
    error: function(e) {
        alert('Error while saving filters: ' + e.message);
    }
});
@RequestMapping(value = "/savefilters", method = RequestMethod.POST)
public @ResponseBody String saveFilters(@RequestParam("visual") String visual, @RequestParam(value = "Name[]", required = false) String[] Name, 
        @RequestParam(value = "Address[]", required = false) String[] Address, @RequestParam(value = "documentType[]", required = false) String[] documentType, 
        @RequestParam("itemQualifier") String itemQualifier, @RequestParam(value = "itemIdentifier[]", required = false) String[] itemIdentifier, @RequestParam("currency") String currency,
        @RequestParam("sellSide") String sellSide, HttpServletRequest request)
{
    try
    {
        System.out.println("saveFilters");
        new DisplayService().saveFilters("ID", visual, Name, Address, documentType, itemQualifier, itemIdentifier, currency, sellSide);
        return "success";
    }
    catch (Exception ex)
    {
        return "error occured while inserting/updating db";
    }
}

我想将所有这些参数作为一个类传递,而不是像这样发送。

如何从 AJAX 调用作为类传递,如何在 Spring MVC 控制器代码中接收它?请问有什么建议吗?谢谢。

【问题讨论】:

标签: jquery ajax spring-mvc


【解决方案1】:

您可以使用请求对象,并使用它可以获得所有参数,如下所示。

public @ResponseBody String saveFilters(HttpServletRequest request){

String visual = request.getParameter("visual")

}

【讨论】:

  • 感谢您的回复。它使用像视觉这样的单个值,但不使用像名称这样的数组参数。我也尝试使用 request.getParameterValues() 方法获取数组值,但无法获取。
  • 对于数组,你必须使用 来获取参数数组,然后处理它。映射参数映射 = request.getParameterMap(); stackoverflow.com/questions/7312436/…。如果它解决了问题,请接受正确的答案:)
  • 这在键和值都是字符串时有效。如果值是像 partnerName 这样的数组,则值为 null。
  • 您是否尝试过这样的数组。映射参数映射 = request.getParameterMap();
  • 是的。我试过这样。映射参数映射 = request.getParameterMap(); if(parameterMap != null){ System.out.println(parameterMap.size()); System.out.println(parameterMap.get("KPI").toString()); System.out.println(parameterMap.get("partnerName")); }
猜你喜欢
  • 2019-04-20
  • 2021-08-09
  • 2016-05-17
  • 2018-05-30
  • 1970-01-01
  • 2016-09-21
  • 2017-02-01
  • 2023-03-26
  • 1970-01-01
相关资源
最近更新 更多