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作为图像嵌入到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提供相关依赖。
任何帮助或指示都将不胜感激。
答案 0 :(得分:0)
您不想将图表放在模型上。你想写一个servlet,它返回图表的jpg图像,然后让图像src指向该servlet。
如果您在模型上设置了图表,那么您必须将字节数组编码为base64字符串,然后执行以下操作:
<img src="data:image/jpg;base64,BASE64ENCODEDSTRINGHERE" />