问题:我不允许renderBinary
。类型renderBinary(InputStream)
中的方法Controller
不适用于参数(JFreeChart
)。
我有这个控制器:
public static void index() {
// create a dataset...Default
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("Category 1", 43.2);
dataset.setValue("Category 2", 27.9);
dataset.setValue("Category 3", 79.5);
// create a chart...
JFreeChart chart = ChartFactory.createPieChart(
"Sample",
dataset,
true,
true,
false
);
List<User> usersA = Department.getUsersA();
List<User> usersB = Department.getUsersB();
render(usersA, usersB, chart);
}
答案 0 :(得分:3)
您需要创建一个Img才能返回。 JfreeChart不是图像。
此外,您需要创建一个控制器来返回图像。您无法以正常渲染结果返回图像。
所以你有一个像renderChart(String chartId)这样的控制器{....制作图表... renderBinary(img); }
这里是从JFreeChart(来自http://www.jfree.org/phpBB2/viewtopic.php?t=113)
创建图像的代码JFreeChart chart = createChart();
...
BufferedImage img = draw( chart, width, height );
OutputStream out = response.getOutputStream();
JPEGImageEncoder encoder =
JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param =
encoder.getDefaultJPEGEncodeParam(img);
param.setQuality(1.0f,true);
encoder.encode(img,param);
out.close();
protected BufferedImage draw(JFreeChart chart, int width, int height)
{
BufferedImage img =
new BufferedImage(width , height,
BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = img.createGraphics();
chart.draw(g2, new Rectangle2D.Double(0, 0, width, height));
g2.dispose();
return img;
}