ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

如何使用Spring MVC和多种响应类型支持JSONP

2019-07-29 16:19:01  阅读:199  来源: 互联网

标签:spring json spring-mvc jackson jsonp


我在控制器中有一个方法,它将根据要求返回HTMLJSON.这是一个这样一个方法的简化示例,模仿我在this question中找到的有关如何执行此操作的信息:

@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的视图的能力吗?

解决方法:

这就是我在Spring MVC中使用JSONP的方法,只需根据您的需要进行修改:

在服务器端:

@RequestMapping(value="/notes/callback.json", method=RequestMethod.GET)
public void jsonpCallback(@RequestParam("callback") String callback, HttpServletResponse response) {
   response.setContentType("text/javascript; charset=UTF-8");
   PrintWriter out = response.getWriter();
   out.print(callback + "(" + jsonDataString + ")");
}

在客户端:

<script src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
<script type="text/javascript">

function yourfunction() {
    jQuery.getJSON("http://localhost:8080/notes/callback.json?callback=?", 
        function(data) {
            alert(data.someParam);
        });
}

</script>

标签:spring,json,spring-mvc,jackson,jsonp
来源: https://codeday.me/bug/20190729/1573486.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有