8

我正在使用 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>

// 控制器层

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

}

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

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

<input type="hidden" name="setting_14" value="abcd"> 
<input type="hidden" name="setting_5" value="xyz"> 

我如何将这些动态参数获取到 Spring 控制器中。

我努力了

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

(2) request.getParameter() :不工作并返回 null,因为这是多部分/表单数据请求

(3) 我用过这个链接 How to upload files to server using JSP/Servlet? 并尝试过

List<FileItem> items = 
       new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);

但在弹簧控制器项目中为空。所以无法迭代它并从中获取 FileItem 。

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

4

2 回答 2

13

您可以使用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");
}
于 2013-11-07T08:13:46.950 回答
0

为什么不只添加一个隐藏字段并通过连接您想要的所有设置值来设置它的值?正如您所说,您正在使用 javascript 添加这些输入字段。它看起来像

<input type="hidden" name="setting" value="set1.value, set2.value, set3.value">

然后你就可以自由地硬编码setting你的参数@RequestParam

于 2013-11-07T08:19:04.360 回答