Тёрка в тагах


Друзья

Его(2) Общие(0) Хотят дружить(0)


  • Atrinax

  • Blackoff

  • login

  • login

  • login

  • login

Враги

Его(0) Общие(0) Обиженные(1)

Большая Тёрка / Мысли / Личная лента olegchir /


olegchir

Копипаста: Spring + JSONP

Пару часов гуглил, как сделать Spring+JSON§ красиво, но получилось как всегда.



Суть вопроса.

Я попробовал возвращать JSONPObject, String, MappingJacksonJsonView — везде есть проблемы из‑за конфигурации с уже существующим legacy.

Last but not least, всё вышеперечисленное заворачивает ответ в кавычки. И даже когда включено @JsonRawValue.

(Говорят ...
Читать далее
...есть вот такое, но я не смог попробовать по той же причине.)

Поэтому просто зафигачим VOID и запишем что надо в response руками! Делать говно так с душой!




Параметры копипасты:
RequestDao, ResponseDao — произвольные объекты для сериализации в JSON с помощью Jackson.
Оба имеют стринговое поле example с геттерами и сеттерами, которое мы будем посылать на сервер и получать назад.

Внутри используется еще и Gson для того, чтобы избежать clash с системными реализациями Jackson.

@RequestMapping(
value = «myurl»,
method = {RequestMethod.GET}
)
@ResponseBody
@JsonRawValue
public void jsonp(@ModelAttribute RequestDao dao,
@RequestParam("callback") String callBack,
@Context HttpServletRequest request,
@Context HttpServletResponse response)
throws Exception {

ResponseDao respDao = new ResponseDao();
respDao.setExample(requestDao.getExample());
String jsonResponse = new Gson().toJson(respDao);

response.setContentType("text/javascript; charset=UTF‑8");
PrintWriter out = response.getWriter();
out.print(callBack + «(» + jsonResponse + ")");
}





И соответственно вызывающий код на Javascript+jQuery:





JSONP test