SpringMVCを使用してRESTfulWebサービスを公開しています。操作の1つは、フォームが送信されたときにRESTfulPUT操作を要求します。
ただし、このフォームは、テキストやチェックボックスなどの通常の入力に加えてファイル入力が含まれているという点で、通常のフォームではありません。
にを追加して、RESTfulPUTおよびDELETEと連携するようにSpringを構成し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を使用してまったく実行可能ですか?もしそうなら、SpringMVCにそれを理解させる方法は?