コントローラに、要求されたものに応じてHTMLまたはJSONを返すメソッドがあります。これは、この質問で見つけたこれを行う方法に関する情報をモデルにした、そのようなメソッドの簡略化された例です。
@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));
}
JSONPObjectをモデルに配置したのは、HTMLが要求された場合にレンダリングするビューからJSONPObjectに到達できるようにする必要があるためです。しかし、これは、コールバックを使用してJSONをレンダリングするときに問題を引き起こします。
curl 'http://localhost:8080/notes/callback.json?c=call'
{"data"call(:{"foo":"bar"})}
ご覧のとおり、モデルの「データ」スロットにデータを配置しているため、モデルがJSONとしてレンダリングされると、余分なラッピングが発生します。私が探しているのは、次のようにレンダリングされたJSON(技術的にはJSONP)です。
call({"data":{"foo":"bar"}})
レンダリング中にJSONPObjectにアクセスするビューを返す機能を壊すことなく、私が行こうとしている場所に到達する方法を誰かが見ることができますか?