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



在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。

在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包装器

最新更新