我正在使用 Spring MVC 来公开一些 RESTful Web 服务。提交表单时,其中一项操作需要 RESTful PUT 操作。
但是,表单不是普通的表单,因为它包含文件输入以及常规输入,例如文本和复选框。
我通过HiddenHttpMethodFilter
在web.xml
. 在我的表单中,我还_method
发送了一个隐藏参数。
所有这些都适用于 DELETE、不上传文件的 PUT 等。当我尝试使用文件上传和表单数据进行 PUT 时,它给了我一个405
.
HTTP Status 405 - Request method 'POST' not supported
我的控制器方法如下所示:
@RequestMapping(value = "/admin/cars/{carId}", method = PUT, headers = "content-type=multipart/form-data")
public String updateCar(@PathVariable("carId") String carId, CarForm form) {
// save and return the right view.
}
我的 HTML 表单如下所示:
<form action="<c:url value='/admin/cars/${car.id}'/>" method="POST" enctype="multipart/form-data">
<input type="hidden" name="_method" value="PUT" />
<input type="text" name="carName" value="${car.name}" />
<input type="file" name="photo" />
<input type="submit" />
</form>
使用 PUT,我想要实现的目标是否可行?如果是这样,如何让 Spring MVC 理解这一点?