Automatyczna konwersja parametru formularza JSON w Spring MVC 4.0

Próbuję zbudować kontroler Spring MVC, który otrzyma formularz POST z parametrem w formacie JSON i sprawi, że Spring automatycznie przekonwertuje go na obiekt Java.

Żądany typ zawartości toapplication/x-www-form-urlencodedNazwa parametru zawierającego ciąg JSON todata.json

To jest kontroler:

@Controller
public class MyController {
    @RequestMapping(value = "/formHandler", method = RequestMethod.POST)
    public @ResponseBody String handleSubscription(
        @RequestParam("data.json") MyMessage msg) {
        logger.debug("id: " + msg.getId());
        return "OK";
    }
}

I tak wygląda obiekt MyMessage:

public class MyMessage {
    private String id;
    // Getter/setter omitted for brevity
}

Być może nie jest to zaskakujące, publikując formularz z parametrem data.json = {"id": „Hello”} powoduje błąd HTTP 500 z tym wyjątkiem:

org.springframework.beans.ConversionNotSupportedException:
    Failed to convert value of type 'java.lang.String' to required type 'MyMessage' 
nested exception is java.lang.IllegalStateException:
    Cannot convert value of type [java.lang.String] to required type [MyMessage]: no matching editors or conversion strategy found

Jeśli przeczytamMappingJackson2HttpMessageConverter docs poprawnie, konwersja Jackson JSON jest wywoływana przez Content-Typeapplication/json, czego oczywiście nie mogę użyć, ponieważ jest to formularz POST (i nie kontroluję części POST).

Czy jest możliwe, aby Spring przekonwertował ciąg JSON na instancję MyMessage, czy też powinienem się po prostu poddać, przeczytać go jako String i sam wykonać konwersję?

questionAnswers(2)

yourAnswerToTheQuestion