我想在我的 web 应用程序中显示一个简单的图表,所以我决定将 JFreeChart 集成到 Spring MVC 中。我找到了以下解决方案:
@RequestMapping("/seeGraph")
public String drawChart(HttpServletResponse response) {
response.setContentType("image/png");
XYDataset pds = createDataset();
JFreeChart chart = createChart(pds);
try {
ChartUtilities.writeChartAsPNG(response.getOutputStream(), chart, 600, 400);
response.getOutputStream().close();
} catch (Exception e) {
}
return "graph";
}
我想这不太好。尽管它确实显示了图形,但它也会引发异常:
getOutputStream() has already been called for this response] with root cause
java.lang.IllegalStateException: getOutputStream() has already been called for this response.
我做了一些研究,发现应用程序可以在任何给定的响应上调用 getOutputStream 或 getWriter ,但不允许两者都做。
但是由于 ChartUtilities.writeChartAsPNG() 我必须调用 getOutputstream,而 Spring 将调用 getWriter()。
是否有任何巧妙的解决方案来避免这种异常?