【问题标题】:Creating google.visualization.DataTable() in java servlet using jstl使用 jstl 在 java servlet 中创建 google.visualization.DataTable()
【发布时间】:2017-03-08 07:25:39
【问题描述】:

我正在尝试使用 Google 注释图表绘制一些数据。当我在 javascript 中硬编码我的数据时,我得到了正确的图表

function drawChart() {
        var data = new google.visualization.DataTable();
          data.addColumn('date', 'Date');
          data.addColumn('number','Level');
          data.addColumn('string', 'Activity');

          data.addRows([
            [new Date(2017,1,14,0, 1), 88,  undefined],
            [new Date(2017,1,14,0, 16), 83,  undefined],
            [new Date(2017,1,14,0, 31), 78,  undefined],
            ...
            [new Date(2017,1,14,23, 46), 74,  undefined]              
            ]);

 var chart = new google.visualization.AnnotationChart(document.getElementById('chart_div'));

    var options = {
      displayAnnotations: true
    };

    chart.draw(data, options);
  }

现在我正在尝试用 jstl forEach 替换 data.addrows 部分,以遍历具有 readingTime、readingLevel 和 readingAnnotation 作为参数的 java 对象“Readings”中的数据 - 但我没有得到我的图表 - 只是得到一个空白页。

function drawChart() {
      var data = new google.visualization.DataTable();
      data.addColumn('date', 'Date');
      data.addColumn('number','Level');
      data.addColumn('string', 'Activity');

      <c:forEach items="${Readings}" var="entry">
      data.addRow(${entry.readingTime}, ${entry.readingValue}, ${entry.readingAnnotation});
      </c:forEach>


      var chart = new google.visualization.AnnotationChart(document.getElementById('chart_div'));

      var options = {
        displayAnnotations: true
      };

      chart.draw(data, options);

在另一个 servlet 中,我使用此循环来简单地在浏览器中打印数据值并且效果很好 - 因此循环能够遍历“读数”列表并读取参数,但它不会像创建数据集一样对值进行硬编码。

对我需要做些什么来完成这项工作有什么想法吗?

【问题讨论】:

    标签: servlets jstl


    【解决方案1】:
    function drawChart() {
          var data = new google.visualization.DataTable();
          data.addColumn('date', 'Date');
          data.addColumn('number','Level');
          data.addColumn('string', 'Activity');
          var rows = []
          <c:forEach items="${Readings}" var="entry">
          rows.push([new Date(${entry.readingTime}), ${entry.readingValue}, ${entry.readingAnnotation}]);
          </c:forEach>
          data.addRow(rows);
    
          var chart = new google.visualization.AnnotationChart(document.getElementById('chart_div'));
    
          var options = {
            displayAnnotations: true
          };
    
          chart.draw(data, options);
    

    【讨论】:

    • 谢谢维克拉姆。我更新了我的代码(假设最后一个大括号是方括号。)但问题仍然存在..
    • 我该怎么做?
    • 没关系 - 我能够看到生成的 javascript 和调试。问题是 String 字段在读取到行时没有放在引号中。感谢您的帮助维克拉姆!
    猜你喜欢
    • 2017-03-29
    • 1970-01-01
    • 2021-08-23
    • 2012-02-14
    相关资源
    最近更新 更多