So unterstützen Sie JSONP mit Spring MVC und mehreren Antworttypen

Ich habe eine Methode in einem Controller, die HTML oder JSON zurückgibt, je nachdem, was gefragt wurde. Hier ist ein einfaches Beispiel für eine solche Methode, das Informationen zur Vorgehensweise nachempfunden hatdiese Frage:

<code>@RequestMapping(value="callback")
public ModelAndView callback(@RequestParam("c") String c) {
    Map response = new HashMap<String, String>();
    response.put("foo", "bar");
    return new ModelAndView("fake", "data", new JSONPObject(c, response));
}
</code>

Ich habe das JSONPObject in das Modell eingefügt, weil ich es benötigen würde, um es aus der Ansicht zu erreichen, die angezeigt wird, wenn HTML angefordert wurde. Dies ist jedoch ein Problem, wenn ich JSON mit einem Rückruf rendere:

<code>curl 'http://localhost:8080/notes/callback.json?c=call'
{"data"call(:{"foo":"bar"})}
</code>

Wie Sie sehen, gibt es diesen zusätzlichen Zeilenumbruch, wenn das Modell als JSON gerendert wird, da ich meine Daten in den "Daten" -Slot des Modells lege. Was ich suche, ist das gerenderte JSON (technisch JSONP), um wie folgt auszusehen:

<code>call({"data":{"foo":"bar"}})
</code>

Kann jemand einen Weg sehen, um dahin zu gelangen, wo ich hin möchte, ohne die Fähigkeit zu beeinträchtigen, eine Ansicht zurückzugeben, die während des Renderns auf das JSONPO-Objekt zugreift?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage