【问题标题】:Display JFreeChart bar chart on Thymeleaf template在 Thymeleaf 模板上显示 JFreeChart 条形图
【发布时间】:2017-01-17 06:01:47
【问题描述】:

Thymeleaf 和 JFreechart 的新手。我必须在一个 html 页面上显示多个条形图。通过研究如何完成这项工作,我发现了一个使用 Thymeleaf 的示例,如下所示:

    JFreeChart chart = createChart(pdSet, "Test Pie Chart using JFreeChart");

    try{
        ChartUtilities.writeChartAsPNG(response.getOutputStream(), chart, 750, 400);
        response.getOutputStream().close();
    } catch(IOException ex) {
        ex.printStackTrace();
    }

我需要能够将渲染的图表传递给模型,以便能够作为图像嵌入到 html 中。我试图将其作为字节数组传递,但没有成功。 控制器代码:

    JFreeChart chart = ChartFactory.createBarChart(null, null, null, bardataset, PlotOrientation.VERTICAL, false, false, false);
    File file = new File("barchart.jpg");

    try {
        ChartUtilities.saveChartAsJPEG(new File(filename), chart, 800, 100);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }  
    if (clientList != null){
        model.addAttribute("chart", chart);
    }

chart.html:

    <div>
        <p> Bar Graph</p>
        <div>
            <img th:src="@{~/chart}" width="1000"/>

        </div>
    </div>

</div>

上面的实现来自我遇到的一个例子...... 使用 Spring-boot 1.4.3 运行它,并在 Java jdk1.8.0_111 上运行 MVC、Thymeleaf、Security 和 JPA 的相关依赖项。

任何帮助或指导将不胜感激。

【问题讨论】:

    标签: java spring-boot thymeleaf jfreechart


    【解决方案1】:

    您不想将图表放在模型上。您想编写一个 servlet,它返回图表的 jpg 图像,然后将图像 src 指向该 servlet。

    如果您对模型上的图表一无所知,您将不得不将字节数组编码为 base64 字符串,然后执行以下操作:

    &lt;img src="data:image/jpg;base64,BASE64ENCODEDSTRINGHERE" /&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-11
      • 1970-01-01
      • 2012-08-24
      • 1970-01-01
      • 2018-02-07
      • 2022-08-12
      • 1970-01-01
      相关资源
      最近更新 更多