2017-04-13 56 views
0

我一直在使用Primefaces图表取得了一些成功,但我想了解更多关于jqPlot的知识,这样我就可以做更灵活的定制。一个例子是我想创建一个组合图(条形图和线组合)。jqPlot如何从java arraylist和JSF beans制作图表

我想从XHTML页面烧成一个jQuery函数来创建的图表:

<button type="button" class="button" onclick="comboChart()">Combo Chart</button> 

功能是:

  function comboChart() { 

      var line1 = [#{chartDataBean.comboChartMapList}]; 
      var line2 = [#{chartDataBean.linePartChartMap}]; 

      var plot2 = $.jqplot('testchart', [line1, line2], { 
         series: [{renderer: $.jqplot.BarRenderer}, {xaxis: 'x2axis', yaxis: 'y2axis'}], 
      axesDefaults: { 
      tickRenderer: $.jqplot.CanvasAxisTickRenderer, 
      tickOptions: { 
           angle: 30 
          } 
         }, 
         axes: { 
          xaxis: { 
           renderer: $.jqplot.CategoryAxisRenderer 
          }, 
          x2axis: { 
           renderer: $.jqplot.CategoryAxisRenderer 
          }, 
          yaxis: { 
           autoscale: true 
          }, 
          y2axis: { 
           autoscale: true 
          } 
         } 
        }); 
       }; 

的JSF bean包含地图可以看到每个数组列表地图将会是一个系列:

public List<HashMap<Object, Double>> getComboChartMapList() { 
    List<List<Endatapoint>> modbinholder = new ArrayList<List<Endatapoint>> 
(); 
    modbinholder = anBean.getModelBinList(); 
    comboChartMap = new HashMap<>(); 
    comboChartMapList = new ArrayList<>(); 

    for (List<Endatapoint> cList : modbinholder) { 
     List<Endatapoint> pholder = new ArrayList<>(); 
     pholder = cList; 
     for (Endatapoint p : pholder) { 

      Date lDate = p.getPointdate(); 
      String pnits = p.getRecords().getSnipunit(); 

      Double aNum = p.getActualnum(); 
      comboChartMap.put(pnits, aNum); 
      comboChartMapList.add(comboChartMap); 
     } 
    } 
    return comboChartMapList; 
} 

以上只是产生一个没有数据的空白图表。综观JS控制台在Chrome和FF(萤火虫)我注意到在列表值都是这样产生的语法错误:

var line1 = [[{Million Dollars=54.7}, {Million Dollars=54.7}]]; 

但jqplot文件需要将这样生成的值:

var line1 = [['Million Dollars', 54], ['Million Dollars', 54.7]]; 

我的问题是:

  1. 什么我在上面的代码做错了什么?
  2. 我可以使用上面的代码传递正确的值,还是需要使用任何其他方法,如JSON?

我在这里阅读的大部分示例和问题似乎都涉及到将动态值传递给jplot的JSON。如果可能,我想坚持使用Java对象。

+1

Json的转换,这就是幕后PrimeFaces为你做 – Kukeltje

回答

0

JSON是必需的,PrimeFaces,或注释的REST接口,这是否对你来说,只是创造一个getter,做需要