如何将 Java JSONArray 与 D3 和 Dimple 一起使用,并使用 Spring MVC 传递?我收到 404 错误
How do I use a Java JSONArray with D3 and Dimple, passed using Spring MVC? I'm getting a 404 error
使用 Spring MVC,我的控制器中有一个 JSONArray,我使用 view.addObject 将其传递给我的视图,如下所示:
@RequestMapping("/graphWeek")
public ModelAndView getGraphWeek(){
JSONArray tweetsForWeek = getGraphWeekData();
ModelAndView mv = new ModelAndView("graphWeek");
mv.addObject("tweetsForWeek", tweetsForWeek);
return mv;
}
在我的 jsp 视图中,我有这个:
var svg = dimple.newSvg("#bar", 800, 500);
var src= ${tweetsForWeek};
console.log(src);
d3.json(src, function (error, data) {
var barChart = new dimple.chart(svg, data);
barChart.addCategoryAxis("x", ["Day", "Topic"]);
barChart.addMeasureAxis("y", "Tweets");
barChart.addSeries("Topic", dimple.plot.bar);
barChart.addLegend(100, 10, 510, 20, "right");
barChart.width = 600;
barChart.height = 400;
barChart.draw();
});
我添加了一个 console.log(src) 调用以确保该数组正在被视图接收并且确实如此。但是我的图表没有显示,它给了我一个错误。这是加载我的视图的结果,在 firebug:
中显示控制台日志和错误
所以您可以在控制台中看到视图正在接收数组,但 d3 没有正确处理它,有人知道是什么导致了这个错误吗?任何帮助将不胜感激,谢谢。
这里不需要d3.json
。你已经有了你的数据。
var svg = dimple.newSvg("#bar", 800, 500);
var src= ${tweetsForWeek};
console.log(src);
var barChart = new dimple.chart(svg, src); //<-- you have your data already
barChart.addCategoryAxis("x", ["Day", "Topic"]);
barChart.addMeasureAxis("y", "Tweets");
barChart.addSeries("Topic", dimple.plot.bar);
barChart.addLegend(100, 10, 510, 20, "right");
barChart.width = 600;
barChart.height = 400;
barChart.draw();
这里的替代方案当然是忘记使用 JSP 模板来加载数组并通过 JSON:
d3.json("/graphWeek", function (error, data) {
var svg = dimple.newSvg("#bar", 800, 500);
var barChart = new dimple.chart(svg, data);
barChart.addCategoryAxis("x", ["Day", "Topic"]);
barChart.addMeasureAxis("y", "Tweets");
barChart.addSeries("Topic", dimple.plot.bar);
barChart.addLegend(100, 10, 510, 20, "right");
barChart.width = 600;
barChart.height = 400;
barChart.draw();
}
使用 Spring MVC,我的控制器中有一个 JSONArray,我使用 view.addObject 将其传递给我的视图,如下所示:
@RequestMapping("/graphWeek")
public ModelAndView getGraphWeek(){
JSONArray tweetsForWeek = getGraphWeekData();
ModelAndView mv = new ModelAndView("graphWeek");
mv.addObject("tweetsForWeek", tweetsForWeek);
return mv;
}
在我的 jsp 视图中,我有这个:
var svg = dimple.newSvg("#bar", 800, 500);
var src= ${tweetsForWeek};
console.log(src);
d3.json(src, function (error, data) {
var barChart = new dimple.chart(svg, data);
barChart.addCategoryAxis("x", ["Day", "Topic"]);
barChart.addMeasureAxis("y", "Tweets");
barChart.addSeries("Topic", dimple.plot.bar);
barChart.addLegend(100, 10, 510, 20, "right");
barChart.width = 600;
barChart.height = 400;
barChart.draw();
});
我添加了一个 console.log(src) 调用以确保该数组正在被视图接收并且确实如此。但是我的图表没有显示,它给了我一个错误。这是加载我的视图的结果,在 firebug:
中显示控制台日志和错误所以您可以在控制台中看到视图正在接收数组,但 d3 没有正确处理它,有人知道是什么导致了这个错误吗?任何帮助将不胜感激,谢谢。
这里不需要d3.json
。你已经有了你的数据。
var svg = dimple.newSvg("#bar", 800, 500);
var src= ${tweetsForWeek};
console.log(src);
var barChart = new dimple.chart(svg, src); //<-- you have your data already
barChart.addCategoryAxis("x", ["Day", "Topic"]);
barChart.addMeasureAxis("y", "Tweets");
barChart.addSeries("Topic", dimple.plot.bar);
barChart.addLegend(100, 10, 510, 20, "right");
barChart.width = 600;
barChart.height = 400;
barChart.draw();
这里的替代方案当然是忘记使用 JSP 模板来加载数组并通过 JSON:
d3.json("/graphWeek", function (error, data) {
var svg = dimple.newSvg("#bar", 800, 500);
var barChart = new dimple.chart(svg, data);
barChart.addCategoryAxis("x", ["Day", "Topic"]);
barChart.addMeasureAxis("y", "Tweets");
barChart.addSeries("Topic", dimple.plot.bar);
barChart.addLegend(100, 10, 510, 20, "right");
barChart.width = 600;
barChart.height = 400;
barChart.draw();
}