Как поддерживать JSONP с Spring MVC и несколькими типами ответов
У меня есть метод в контроллере, который будет возвращать HTML или JSON в зависимости от того, что было запрошено. Вот урезанный пример такого метода, смоделированный после информации о том, как сделать это, который я нашел вэтот вопрос:
<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>
Я поместил JSONPObject в модель, потому что мне нужно, чтобы иметь возможность получить его из представления, которое отображается, если запрашивался HTML. Но это создает проблему при рендеринге JSON с обратным вызовом:
<code>curl 'http://localhost:8080/notes/callback.json?c=call' {"data"call(:{"foo":"bar"})} </code>
Как вы можете видеть, потому что я помещаю свои данные в слот «data» в модели, когда модель отображается как JSON, возникает такая дополнительная упаковка. То, что я ищу, это визуализированный JSON (технически JSONP), который будет выглядеть следующим образом:
<code>call({"data":{"foo":"bar"}}) </code>
Может кто-нибудь увидеть способ получить, где я пытаюсь пойти, не нарушая возможность вернуть представление, которое обращается к JSONPObject во время рендеринга?