Automatische Konvertierung von JSON-Formularparametern in Spring MVC 4.0

Ich versuche, einen Spring MVC-Controller zu erstellen, der ein POST-Formular mit einem Parameter im JSON-Format empfängt und von Spring automatisch in ein Java-Objekt konvertiert.

Anforderungsinhaltstyp istapplication/x-www-form-urlencodedDer Name des Parameters, der eine JSON-Zeichenfolge enthält, lautetdata.json

Dies ist der Controller:

@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";
    }
}

Und so sieht das MyMessage-Objekt aus:

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

Es überrascht vielleicht nicht, dass das Senden eines Formulars mit dem Parameter data.json = {"id": "Hello"} den HTTP-Fehler 500 mit der folgenden Ausnahme zur Folge hat:

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

Wenn ich das leseMappingJackson2HttpMessageConverter-Dokumente korrekterweise wird die Jackson JSON-Konvertierung von Content-Type ausgelöstapplication/json, was ich natürlich nicht verwenden kann, da es sich um ein POST-Formular handelt (und ich den POST-Teil nicht kontrolliere).

Ist es möglich, dass Spring den JSON-String in eine Instanz von MyMessage konvertiert, oder sollte ich einfach aufgeben, ihn als String lesen und die Konvertierung selbst durchführen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage