jQuery + Spring-使用request.getParameter返回null的AJAX FormData提交

时间:2016-07-22 22:55:19

标签: java jquery ajax spring

所以,我的表单看起来像这样:

<form role="form" method="post" id="upload-form" action="">
    <select class="form-control" name="category" style="margin: 0.5em">
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
        <option value="4">4</option>
        <option value="5">5</option>
    </select>
    <button type="submit">Submit</button>
</form>

我的JavaScript代码是:

$("button").click(function(e){
    e.preventDefault();

    var request = $.ajax({
        url: '/pos/csvUpload,
        data: new FormData(document.getElementById("upload-form")),
        enctype: 'multipart/form-data',
        processData: false,
        contentType: false,
        type: 'POST'
    });

    // request callbacks...
});

我的Java代码就像这样处理它:

@RequestMapping(value = "/pos/csvUpload", method = RequestMethod.POST)
public ResponseEntity<String> csvUpload(Model model,
                            MultipartHttpServletRequest request,
                            HttpServletResponse response
) throws Exception
{
    String category = request.getParameter("category");
    ...
}

(注意我有MultipartHttpServletRequest;它对我来说是必要的,因为我在那里有一个文件输入,使用该类来解析它。)

当我浏览教程和更多在线SO帖子时,他们都告诉我使用request.getParameter。但是,当我使用它时,它会返回null

  1. 我正在使用FormData类
  2. 我正在使用AJAX通过
  3. 发送FormData
  4. 我正在使用Spring MVC
  5. 我正在使用MultipartHttpServletRequest类

1 个答案:

答案 0 :(得分:0)

当您使用 listBox 时,请使用HttpServletRequest#getParameter (), 这将返回值数组而不是单值。

您可以参考java doc here

String[] category = request.getParameterValues("category");