私は 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 パラメーターを微調整し、試行錯誤を行っているだけです。誰かが私に時間を節約してくれるなら、それは素晴らしいことだと思いました...それまでの間、私はさまざまなことに挑戦し続けます.
ありがとう!