2013-03-12 70 views
0

在辅助bean用于HighChart页的支持下,我查询数据库和设定图表的数据作为例如:HighChart组合柱样条由JSF豆

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

系列是POJO与namedata性质。

在HighChart部分chart.xhtml我

chart: { type: column, 
    ... 
    series: $.parseJSON(${chartController.chartData}) 

这个工作,但现在我想沿着另一组系列覆盖的花键发送。

我修改了系列的对象,包括颜色和类型,然后在我的支持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对象。

回答

0

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

对此的一个替代方案是你的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包装器。

+0

是的,我想这就是我所担心的。此外,似乎我需要制作“LineSeries extends Series”和“ColumnSeries extends Series”,因为在Series类型的Column上设置行破折号属性没有任何意义。理想情况下,我想找出一种方法来传入不同的系列,并在Javascript中对它们进行风格化。 – jeff 2013-03-13 15:51:33

+1

有一个现有的高级包装java包装,它可以做你想做的。 http://www.highcharts.com/download – SteveP 2013-03-13 16:03:08