Na moim wiosennym serwerze MVC chcę otrzymać żądanie wieloczęściowe/dane formularza zawierające zarówno plik (obraz), jak i niektóre metadane JSON. Potrafię zbudować dobrze sformułowane żądanie wieloczęściowe, gdzie sekcja JSON ma Content-Type=application/json
. Usługa Wiosna jest w formie:Dodaj konwerter wiadomości JSON dla wieloczęściowych/formularzy danych
@RequestMapping(value = MY_URL, method=RequestMethod.POST, headers="Content-Type=multipart/form-data")
public void myMethod(@RequestParam("image") MultipartFile file, @RequestParam("json") MyClass myClass) {
...
}
Plik został poprawnie przesłany, ale mam problemy z części JSON. Otrzymuję ten błąd:
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
Jeśli nie używam wieloczęściowy żądania konwersji za pomocą JSON działa dobrze Jackson 2, ale przy użyciu wieloczęściowy dostaję poprzedni błąd. Myślę, że muszę skonfigurować wieloczęściowy konwerter wiadomości, aby obsługiwał JSON jako część wiadomości, ale nie wiem jak. Oto moja konfiguracja:
<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>
Wszystko działa dobrze, jeśli mogę użyć jako typ String myClass zamiast MojaKlasa, ale chcą korzystać ze wsparcia Wiosna MVC do konwersji parametrów.
Jestem również stoi podobny problem http://stackoverflow.com/questions/18896648/json-post-spring-mvc-curl-400-bad-request, ale nie ma jeszcze rozwiązania – Pradeep