В документах загрузки файлов jQuery говорится, что я могу отправлять дополнительные параметры данных формы, установив параметр formData
для объекта перед его отправкой. Я делаю это так:
data.formData = {'a':'one', 'b':'two'};
...а затем звоню data.submit()
. Мой сервлет Java (3.x) вызывается, но когда я пытаюсь получить параметры обычным способом, например.
request.getParameter("a");
...там ничего нет (т.е. это null
). Я тоже посмотрел в request.getParameterNames()
и request.getParameterMap()
, они оба пустые.
Как я могу получить доступ к параметрам?
Это мои параметры инициализации загрузки файлов:
url: '/my-upload-servlet',
autoUpload: false,
singleFileUploads: false,
maxFileSize: 9000000,
acceptFileTypes: /(\.|\/)(gif|jpe?g|png|tif|tiff|pdf)$/i,
dataType: 'json',
previewMaxWidth: 128,
previewMaxHeight: 85,
disableImageResize: false,
previewCrop: true,
Я также попытался установить параметр formData
для массива объектов, который, как говорят документы, также является вариантом, например.
data.formData = [ {name:'a', value:'one'}, {name:'b', value:'two'} ]
... но это все еще не работает.
Вот полный фрагмент кода для загрузки файла (закомментированные вещи — это другие вещи, которые я пробовал):
var params = new FormData();
params.append('params', JSON.stringify({a:'one', b:'two'}) );
data.formData = params;
//data.formData = {a:'one', b:'two'};
//data.formData = [
// { name: 'a', value: 'one' },
// { name: 'b', value: 'two' },
//];
//data.url = '/my-upload-servlet?a=one&b=two';
data.submit()
.success(function (result, textStatus, jqXHR) {
console.log('Hurray!');
}).error(function (jqXHR, textStatus, errorThrown) {
console.log('Boo!');
}).complete(function (result, textStatus, jqXHR) {
console.log('Done');
});
Ни один из них не работает для меня.
Независимо от того, какой из вышеперечисленных методов я пробую, вызов HttpServletRequest.getParameter("a")
или HttpServletRequest.getParameter("params")
(в случае FormData) всегда возвращает null
.