2014-09-03 3 views
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: ['[email protected]', '[email protected]'], 
     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; 
} 

Я проверил длину formats и recipients которое 1.

Я даже пытался получить значения, используя

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

Тем не менее я получаю отдельные значения в массиве. Длина по-прежнему одна?

Что происходит не так?

+0

вы пробовали проверить значение 'formats', если он содержит массив. –

+0

использовать данные: 'JSON.stringify (yourarray)', тогда в контроллере используйте 'JSONArray' не' String [] '. –

+0

@Kerppag Он состоит из одного значения – phoenix

ответ

1

Вы можете попробовать это, весной контроллер может принимать CSV, как массив или список:

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

ИЛИ

$.post(window.DashboardGlobals.sendMail, { 
    formats: 'png,pdf', 
    recipients: '[email protected],[email protected]', 
    ... 
}); 
Смежные вопросы