在HighChart页面的后台bean中,我查询数据库并设置图表数据如下:
series.add(new Series("Series1", chartDao.getData1()));
series.add(new Series("Series2", chartDao.getData2()));
setChartData(new Gson().toJson(series)); //For HighCharts
系列是具有name
和data
性质的pojo。
在chart.xhtml的HighChart部分,我有
chart: { type: column,
...
series: $.parseJSON(${chartController.chartData})
这个可以工作,但是现在我想发送另一组作为样条覆盖的系列。
我修改了Series对象,使其包含颜色和类型,然后在后台bean中执行
series.add(new Series("Series1", chartDao.getData1(), "blue", "column"));
series.add(new Series("Series2", chartDao.getData2(), "red", "column"));
series.add(new Series("Series3", chartDao.getData3(), "yellow", "spline"));
series.add(new Series("Series4", chartDao.getData4(), "green", "spline"));
这也工作,但这是正确的方式吗?我想知道是否有更好的方法,因为每次我想调整我的图表,似乎我必须修改我的系列对象。
我觉得你的解决方案不错。我想你担心的问题是,你必须修改你的系列构造函数,因为你想调整一个系列设置。
另一种方法是在Series对象上添加方法来修改各种设置:
Series s = new Series("Series1", chartDao.getData1());
s.setColor("blue");
s.setType("column");
s.setYAxis(0);
...
series.add(s);
这样,你只需要为那些需要它的系列调用新方法,而不是修改每个系列构造函数(例如column可以是默认类型)。
或者,您可以在这里查看highcharts的一些现有包装器:http://www.highcharts.com/download。这里至少列出了一个java包装器