0

我有以下 JQuery 代码,它将一些请求参数发送到我的 Spring MVC 控制器。对于某些参数,我应该得到多个值。

 $('#tb-email').click(function(event) {
     var base, data, formats, recipients, reportSource, reportSourceType;
     if ($(this).parent('li').hasClass('disabled')) {
         return false;
     }
     base = "<base href=\"" + window.location.protocol + "//" + window.location.host + window.DashboardGlobals.baseUrl + "\">";
     data = $('html').clone().find('script').remove().end().find('nav').remove().end().find('#dashboardCanvas').removeClass('dashboardCanvas').end().find('head').prepend(base).end().html();
     data = encodeURIComponent(Base64.encode('<html>' + data + '</html>'));
     $.post(window.DashboardGlobals.sendMail, {
         formats: ['png', 'pdf'],
         recipients: ['abc@xyz.com', 'xyz@abc.com'],
         reportSource: data, //Base64 data
         reportSourceType: 'adhoc',
         reportName: 'DataQualityApp'
     });
     event.preventDefault();
 });

单击时tb-email,请求将提交给保存在DashboardGlobals变量中的某个控制器。

在服务器端,我编写了以下 Java 代码来获取参数格式和接收者的多个值。

public @ResponseBody String process(@RequestParam("formats") String[] formats, @RequestParam("recipients") String[] recipients, @RequestParam("reportSource") String reportSource, @RequestParam("reportSourceType") String reportSourceType, HttpServletRequest request) {
        ...Some Processing....
    return null;
}

我检查了formatsrecipients长度为1。

我什至尝试使用

String[] formats = request.getParameterValues("formats");
String[] recipients = request.getParameterValues("recipients");

我仍然在数组中获得单个值。长度还是一?

出了什么问题?

4

1 回答 1

1

你可以试试这个,spring 控制器可以将 csv 作为数组或列表:

$.post(window.DashboardGlobals.sendMail, {
     formats: ['png', 'pdf'].join(","),//<-- create csv string
     recipients: ['abc@xyz.com', 'xyz@abc.com'].join(","),//<-- create csv string
     ...
});

或者

$.post(window.DashboardGlobals.sendMail, {
     formats: 'png,pdf',
     recipients: 'abc@xyz.com,xyz@abc.com',
     ...
});
于 2014-09-03T09:01:32.740 回答