0
我試圖在我的應用程序中實現d3 js圖。我正在按照here所述的示例進行操作。這是由圖書館的作者開發的,它很好地工作。我現在手動創建一個json字符串(並且是硬編碼的!)用於測試,並且我想將它從控制器傳遞給HTML以進行呈現。春天 - 如何將字符串傳遞給JavaScript的HTML?
的D3Service
classis:
public String buildGraphJsonFromId(String id) {
LOG.debug("Generating graph JSON data for id: " + id);
return buildJson(id);
}
protected String buildJson(String id) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("{");
stringBuilder.append("\"name\": \"Clifford Shanks\",");
stringBuilder.append("\"born\": 1862,");
stringBuilder.append("\"died\": 1906,");
stringBuilder.append("\"location\": \"Petersburg, VA\",");
stringBuilder.append("\"parents\": [");
stringBuilder.append("{");
stringBuilder.append("\"name\": \"James Shanks\",");
stringBuilder.append("\"born\": 1831,");
stringBuilder.append("\"died\": 1884,");
stringBuilder.append("\"location\": \"Petersburg, VA\",");
stringBuilder.append("\"parents\": [");
stringBuilder.append("{");
stringBuilder.append("\"name\": \"Robert Shanks\",");
stringBuilder.append("\"born\": 1781,");
stringBuilder.append("\"died\": 1871,");
stringBuilder.append("\"location\": \"Ireland/Petersburg, VA\"");
stringBuilder.append("},");
stringBuilder.append("{");
stringBuilder.append("\"name\": \"Elizabeth Shanks\",");
stringBuilder.append("\"born\": 1795,");
stringBuilder.append("\"died\": 1871,");
stringBuilder.append("\"location\": \"Ireland/Petersburg, VA\"");
stringBuilder.append("}");
stringBuilder.append("]");
stringBuilder.append("},");
stringBuilder.append("{");
stringBuilder.append("\"name\": \"Ann Emily Brown\",");
stringBuilder.append("\"born\": 1826,");
stringBuilder.append("\"died\": 1866,");
stringBuilder.append("\"location\": \"Brunswick/Petersburg, VA\",");
stringBuilder.append("\"parents\": [");
stringBuilder.append("{");
stringBuilder.append("\"name\": \"Henry Brown\",");
stringBuilder.append("\"born\": 1792,");
stringBuilder.append("\"died\": 1845,");
stringBuilder.append("\"location\": \"Montgomery, NC\"");
stringBuilder.append("},");
stringBuilder.append("{");
stringBuilder.append("\"name\": \"Elizabeth Shanks\",");
stringBuilder.append("\"born\": 1793,");
stringBuilder.append("\"died\": 1882,");
stringBuilder.append("\"location\": \"Montgomery, NC\"");
stringBuilder.append("}");
stringBuilder.append("]");
stringBuilder.append("}");
stringBuilder.append("]");
stringBuilder.append("}");
return stringBuilder.toString();
}
的D3Controller
是:
<script th:inline="javascript" type="text/javascript">
$(document).ready(function() {
var graphData = '${d3Data}';
alert(graphData);
// continued javascript detailed on the example
});
</script>
我想要什麼:
@RequestMapping("/graph")
public void buildJsonForGraph(ModelMap modelMap) {
modelMap.addAttribute("d3Data", buildD3GraphData("id"));
System.out.println(buildD3GraphData("id"));
}
protected String buildD3GraphData(String id) {
// service layer method call to deliver the specific json
return d3Service.buildGraphJsonFromId(id);
}
而且HTML
的<script />
會議開始由定義這裏要做的是,當頁面是loade時d,json文本字符串將被傳遞給javascript和呈現的樹。
相反,我什麼也得不到。我在這裏錯過了什麼?