【问题标题】:How to pass array in jquery ajax call and how to receive same from spring mvc controller如何在 jquery ajax 调用中传递数组以及如何从 spring mvc 控制器接收数组
【发布时间】:2016-07-07 12:18:47
【问题描述】:

我正在使用 jquery ajax 调用 spring mvc 控制器方法。

jquery ajax 调用:

    var filters = {KPI : visual, partnerName: params['partnerName'], itemQualifier: getItemQualifier(), currency : getCurrency(), sellSide: getSellSide()};

$.ajax({                                                                    
 type: "POST",
 url: "/reports/savefilters",
 data: filters,
 success: function(response){
     alert('success: ' + response);
 },
 error: function(e){
    alert('Error: ' + e.message);
 }
});

Spring mvc 代码:

 @RequestMapping(value="/savefilters",method=RequestMethod.POST)
 public void saveFilters(@RequestParam("KPI") String KPI,    @RequestParam("partnerName") String partnerName,
    @RequestParam("itemQualifier") String itemQualifier, @RequestParam("currency") String currency, 
    @RequestParam("sellSide") String sellSide){
           System.out.println("saveFilters");
}

没有 "@RequestParam("partnerName") String partnerName" 参数,它可以正常工作。

这里的“params['partnerName']”值类似于 abc,def,ghi。

我没有正确地向控制器发送数据吗??? 任何建议如何使它工作???。谢谢...

【问题讨论】:

    标签: jquery json ajax spring-mvc


    【解决方案1】:

    改变

    @RequestParam("partnerName") String partnerName
    

    @RequestParam(value = "partnerName[]", required = false) String[] partnerName
    

    【讨论】:

    • partnerName 数组不为空时可以正常工作。如果数组为空,则显示“String[] parameter 'partnerName[]' is not present”错误。
    • @Hemachandra 在@RequestParam 中使用属性required,请查看我的更新答案。
    • 谢谢@10086。通过这些更改,它可以按预期工作
    • 还有一个疑问......我需要传递大约 8 个参数,其中有 4 个数组。我认为将这么多参数传递给一个方法是不合适的。我认为最好的解决方案是使用一个包含所有这些参数的 json 对象。这是否适合作为 json 对象传递???
    • @Hemachandra 不,不是 JSON 对象,您应该定义一个 class 来执行此操作。
    猜你喜欢
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 2016-10-28
    • 2012-08-19
    相关资源
    最近更新 更多