0

私は 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 だけでなく、コールバック関数です。

これで、正しい JSON を返す Spring 4 MVC RESTful 関数ができました。しかし、URL を使用して JSON を取得すると、次のようになります。

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

期待どおりの 2 つのノードを取得しましたが、それらを接続する線がありません。この場合、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 パラメーターを微調整し、試行錯誤を行っているだけです。誰かが私に時間を節約してくれるなら、それは素晴らしいことだと思いました...それまでの間、私はさまざまなことに挑戦し続けます.

ありがとう!

4

0 に答える 0