2017-01-17 19 views
0

Новинка для тимелеафа и JFreechart. Мне нужно отобразить несколько гистограмм на одной странице html. Из исследования в том, как получить это сделано, я нашел пример использования Thymeleaf, как показано ниже:Показать диаграмму JFreeChart на шаблоне Тимелеафа

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> 

выше реализации из примера я наткнулся ... Запуском этого с весной-загрузками 1.4.3 со связанными зависимостями для MVC , Thymeleaf, Security и JPA на Java jdk1.8.0_111.

Любая помощь или направление будут оценены.

ответ

0

Вы не хотите размещать диаграмму на модели. Вы хотите написать сервлет, который возвращает jpg-изображение диаграммы, а затем точку изображения src на этом сервлете.

Если вы мертвы набор с наличием диаграммы на модели, вы будете иметь, чтобы кодировать массив байтов в виде строки base64, а затем сделать что-то вроде этого:

<img src="data:image/jpg;base64,BASE64ENCODEDSTRINGHERE" />