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和呈现的树。
相反,我什么也得不到。我在这里错过了什么?