Thymeleaf如何为Google Chart输出Object数组

时间:2016-11-24 09:56:30

标签: spring-boot google-visualization thymeleaf

使用Thymeleaf的Google图表的示例确实缺乏。我不想为每个图表创建一个HTTP端点,这是这里采用的方法:http://www.baeldung.com/spring-rest-api-metrics虽然这是一个很好的指南。

我只想知道Thymeleaf如何将对象数组Object[][]输出到图表API可以提取的javascript字符串表示形式。必须(资本M)是可能的。

据我在阅读文档时可以看到,我使用的语法应该有效。请指教

脚本

<script type="text/javascript">
    // Load the Visualization API and the piechart package.
    google.load('visualization', '1.0', {
        'packages' : [ 'corechart' ]
    });

    // Set a callback to run when the Google Visualization API is loaded.
    google.setOnLoadCallback(drawChart);

    function drawChart() {
        var d = /*[[${tools}]]*/  ;
        var data = google.visualization.arrayToDataTable(d);

    var options = {
        title: 'Test data generated by tool',
        pieHole: 0.4,
    };

    var chart = new google.visualization.PieChart(document.getElementById('data_chart');
    chart.draw(data, options);
  }
</script>

控制器

@RequestMapping("portal")
String index(Model model){
    model.addAttribute("metrics", metricsService.getMetricsForHomePage());
    model.addAttribute("tools", metricsService.getToolMetricsForHomePage());
    return "index";
}

服务

@Override
public Object[][] getToolMetricsForHomePage() {

    int rowCount = (int) testToolRepository.count();
    Object[][] result = new Object[rowCount][2];

    int i = 0;
    for (TestTool t : testToolRepository.findAll()){
        result[i][0] = t.getName();
        result[i][1] = t.getGeneratedDataCount();
        i++;
    }
    return result;
}

1 个答案:

答案 0 :(得分:0)

您缺少脚本标记上的Thymeleaf内联注释:

<script type="text/javascript" th:inline="javascript">

这将打开内联功能。