Spring MVC サーバーで、ファイル (画像) と JSON メタデータの両方を含む multipart/form-data リクエストを受信したいと考えています。JSON セクションにContent-Type=application/json
. Spring サービスの形式は次のとおりです。
@RequestMapping(value = MY_URL, method=RequestMethod.POST, headers="Content-Type=multipart/form-data")
public void myMethod(@RequestParam("image") MultipartFile file, @RequestParam("json") MyClass myClass) {
...
}
ファイルは正しくアップロードされていますが、JSON 部分に問題があります。次のエラーが表示されます。
org.springframework.beans.ConversionNotSupportedException: Failed to convert value of type 'java.lang.String' to required type 'myPackage.MyClass'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [myPackage.MyClass]: no matching editors or conversion strategy found
マルチパート リクエストの JSON 変換を使用しない場合、Jackson 2 を使用するとうまく機能しますが、マルチパートを使用すると前のエラーが発生します。メッセージの一部として JSON をサポートするようにマルチパート メッセージ コンバーターを構成する必要があると思いますが、その方法がわかりません。これが私の構成です:
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
</mvc:message-converters>
</mvc:annotation-driven>
MyClass ではなく myClass の型として String を使用するとすべてうまく機能しますが、Spring MVC サポートをパラメーター変換に使用したいと考えています。