如何将 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();
}