我在previous question中描述的使用RequestMethod.PUT
(和RequestMethod.DELETE
)时感到笨手笨脚。最后这种方法有效,但是当我在Spring控制器中使用RequestMethod.PUT
指定一个方法时,在提交表单时会调用此方法,但可能看起来即使表单有请求也不会被视为多部分请求属性enctype="multipart/form-data"
。
表格如下,类似于上一个问题。
<form:form id="mainForm" name="mainForm" method="put" action="Temp.htm" enctype="multipart/form-data" commandName="tempBean">
<input type="file" id="myFile" name="myFile"/>
<input type="text" id="myText" name="myText"/>
<input type="submit" id="btnSubmit" name="btnSubmit" value="Submit"/>
</form:form>
和单击提交按钮时调用的Spring中的方法如下所示。
@RequestMapping(method={RequestMethod.PUT}, value={"admin_side/Temp"}, headers={"content-type=multipart/form-data"})
public String update(@RequestParam("myText") String text, @ModelAttribute("tempBean") TempBean tempBean, BindingResult error, Map model, HttpServletRequest request, HttpServletResponse response)
{
System.out.println(ServletFileUpload.isMultipartContent(request)+" : "+text);
return "admin_side/Temp";
}
获取其他请求参数,例如@RequestParam("myText") String text
,甚至request.getParameter("myText")
,但ServletFileUpload.isMultipartContent(request)
的方法调用返回false(同样request.getParameter("myFile")
返回null
)表示请求似乎不是多部分请求。
当请求方法更改为RequestMethod.POST
时,一切正常。
如何使用PUT
方法获取多部分内容?