Spring:Multipart表单数据请求:从请求中读取动态参数

Rak*_*oni 7 java spring spring-mvc

我正在使用Spring框架并能够成功上传服务器上的文件.

<form action="upload.do" method="post" enctype="multipart/form-data">
    <input type="text" name="description" />
    <input type="file" name="locationMapFile" />
    ........
    ........
    <input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)

//控制器层

@RequestMapping(value = "/upload.do", method = {RequestMethod.POST})
public String addEditLocationToCompany(Model model
   ,@RequestParam("description")String desc
   ,@RequestParam(value="locationMapFile", required=false) CommonsMultipartFile locationMapFileData)
{

}
Run Code Online (Sandbox Code Playgroud)

到现在一切都很好.现在我使用javascript在表单上添加一些动态隐藏参数.

注意:根据设置,我定义了动态参数名称及其值

<input type="hidden" name="setting_14" value="abcd"> 
<input type="hidden" name="setting_5" value="xyz"> 
Run Code Online (Sandbox Code Playgroud)

如何将这些动态参数提取到Spring控制器中.

我试过了

(1)我不能使用@RequestParam,因为不想硬编码参数名

(2)request.getParameter():不工作并返回null,因为这是multipart/form-data请求

(3)我使用过这个链接 如何使用JSP/Servlet将文件上传到服务器? 并尝试过

List<FileItem> items = 
       new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
Run Code Online (Sandbox Code Playgroud)

但在spring中,控制器为空.所以无法迭代它并从中获取FileItem.

请帮我找出将动态参数的值放入spring框架的方法.

Deb*_*kia 11

您可以使用MultipartHttpServletRequest获取请求参数:

@RequestMapping(value = "/upload.do", method = {RequestMethod.POST})
public String addEditLocationToCompany(Model model
   ,@RequestParam("description")String desc
   ,@RequestParam(value="locationMapFile", required=false) CommonsMultipartFile locationMapFileData, MultipartHttpServletRequest mrequest)
{
String value = mrequest.getParameter("setting_14");
}
Run Code Online (Sandbox Code Playgroud)