我在控制器中有一个方法,它将根据要求返回 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,我必须能够从呈现的视图中访问它。但是当我使用回调渲染 JSON 时,这会带来一个问题:
curl 'http://localhost:8080/notes/callback.json?c=call'
{"data"call(:{"foo":"bar"})}
如您所见,因为我将数据放在模型的“数据”槽中,所以当模型呈现为 JSON 时,会有额外的包装。我正在寻找的是呈现的 JSON(技术上是 JSONP)看起来像这样:
call({"data":{"foo":"bar"}})
任何人都可以在不破坏在渲染期间返回访问 JSONPObject 的视图的能力的情况下找到一种方法来获得我想要去的地方吗?