Spring 4 REST返回JavaScript回调和JSON

时间:2018-03-14 15:31:18

标签: javascript json spring spring-rest getorgchart

我正在使用GetOrgChart,我真的很喜欢它。他们有来自JSON示例的负载,他们的演示中的javascript代码如下所示:

  <script type="text/javascript">
    $.getJSON("http://www.getorgchart.com/JsonInitialization/Read?callback=?", function (source) {
        var peopleElement = document.getElementById("people");
        var orgChart = new getOrgChart(peopleElement, {
            theme: "helen",
            primaryFields: ["Name", "Title"],
            photoFields: ["Image"],
            linkType: "M",
            enableEdit: false,
            enableDetailsView: false,
            dataSource: source
        });
    });
</script>

获取JSON的URL如下所示:

http://www.getorgchart.com/JsonInitialization/Read?callback=?

但实际上,你只需要:

http://www.getorgchart.com/JsonInitialization/Read

这会得到这段代码:

callback( ...JSON here ... );

所以,不仅仅是JSON,而是一个回调函数。

现在,我有一个Spring 4 MVC RESTful函数,它返回正确的JSON。 但是,如果我只是使用URL来获取JSON,例如:

http://127.0.0.1:8080/myapp-be/api/orgCharts/contactId/7

我得到了两个我期待的节点,但没有连接它们的线路。在这种情况下,我认为我需要将URL更改为:

http://127.0.0.1:8080/myapp-be/api/orgCharts/contactId/7?callback=?

我认为不是只返回JSON数据,而是需要返回:

callback( ...JSON here ... );

我在Spring中定义的RESTful Web服务如下:

@RequestMapping(value = "/opportunityId/{opportunityId}", 
    method = RequestMethod.GET, 
    headers = "Accept=application/json", 
    produces = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody List<ChartNodeDTO> getOrgChartData(@PathVariable long contactId)
{
    List<ChartNodeDTO> orgChartList = orgChartService.getOrgChartByContactId(contactId);
    return orgChartList;
}

问题是......我是否将其更改为返回字符串?在后端,我可以创建一个String,例如:String data =“callback(”+ json +“);”; 但这似乎不是正确的方法。

我想返回Javascript代码,但我只是调整Spring REST参数,并在找到正确的解决方案之前进行反复试验。 我想如果有人可以节省我一些时间,那就太棒了......在此期间,我会继续尝试不同的事情。

谢谢!

0 个答案:

没有答案