由JSF Bean支持的HighChart组合列样条

时间:2013-03-12 23:06:46

标签: java json highcharts gson

在HighChart页面的支持bean中,我查询数据库并设置图表数据:

    series.add(new Series("Series1", chartDao.getData1()));
    series.add(new Series("Series2", chartDao.getData2()));
    setChartData(new Gson().toJson(series)); //For HighCharts

系列是具有namedata属性的pojo。

在HighChart部分的chart.xhtml中我有

    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对象。

1 个答案:

答案 0 :(得分:0)

您的解决方案对我来说非常好。我认为你担心的问题是你必须修改你的Series构造函数,因为你想调整其中一个系列设置。

另一种方法是在Series对象上添加methonds来修改各种设置:

Series s = new Series("Series1", chartDao.getData1());
s.setColor("blue");
s.setType("column");
s.setYAxis(0);
...
series.add(s);

这样,您只需要为需要它的那些系列调用新方法,而不是修改每个系列构造函数(例如,列可以是默认类型)。

或者,你可以在这里查看一些现有的高图表包装:http://www.highcharts.com/download。这里至少列出了一个java包装器。