据我所知,自定义过滤器可以在Spring MVC的早期版本被用来实现JSONP。 此外本实施例中描述了通过扩展实施JSONP在Spring MVC 3.1的方法MappingJacksonHttpMessageConverter
类和修改域对象。
是否有解决JSONP在Spring MVC 3.2除使用上述方法更简单(或常规)的方法? 我没有看到JSONP春3.2文档无法解决的。
据我所知,自定义过滤器可以在Spring MVC的早期版本被用来实现JSONP。 此外本实施例中描述了通过扩展实施JSONP在Spring MVC 3.1的方法MappingJacksonHttpMessageConverter
类和修改域对象。
是否有解决JSONP在Spring MVC 3.2除使用上述方法更简单(或常规)的方法? 我没有看到JSONP春3.2文档无法解决的。
像这样简单的方法
@RequestMapping(value = "/jsonp", method = RequestMethod.GET)
@ResponseBody
public String jsonp(@RequestParam("c")String callBack) throws Exception{
ObjectMapper objectMapper = new ObjectMapper();
Map<String, Object> map = new HashMap<String, Object>();
map.put("data", "<p>jsonp data<p>");
return objectMapper.writeValueAsString(new JSONPObject(callBack,map));
}
随着春天4.1,你可以用@ControllerAdvice做到这一点真的很简单
https://spring.io/blog/2014/07/28/spring-framework-4-1-spring-mvc-improvements
您只需Bhagya席尔瓦使用弹簧JSONP支持为你的项目的依赖。
https://github.com/bhagyas/spring-jsonp-support
更多信息可在README.md文件。
我一直在寻找的JSONP方法更简单,OOB方式(JSONP / CORS应内置IMO ......不需要任何自定义代码)......从来没有发现任何...但与Spring团队伸出之后,原来, JSONP现在通过支持OOB在4.0.5 MappingJacksonJsonView
和内置支持CORS到跟随其后。
下面是处理这种情况的最简单方法
@GET
@Path("/jsonp")
@Produces("application/json")
public Response jsonp(@QueryParam("data") String json,
@QueryParam("callback") String callBack
@Context HttpServletRequest request) throws Exception {
String jsonResponse= "{ \"sttaus\" :\"some data\" }";
try{
.. // do your business logic
}catch(Exception e){ ... }
return Response.status(201).entity(callBack+"("+jsonResponse+")").build();
}