:方法
<img src="${createLink(controller:'paretoChart', action:'buildParetoChart11')}"/>
チャートビルアクションのコードである:
def buildParetoChart11 = {
def PlotService p11 = PlotService.getInstance()
def poList = paretoChartService.getParetoidPO()
def listCounter = 0
def idPO = poList[listCounter]
idPO.toString()
def String idPOvalue = idPO
def out = response.outputStream
out = p11.paretoPlot(out, idPOvalue)
response.setContentType("image/jpg")
session["idPOList11"] = poList
}
ジャワp11.paretoPlot(OUT、idPOvalueは)のOutputStream内部チャートのBufferedImageを返し、それだけで1つのグラフのために働きます。他の3つのチャートは、すべてのポアアクションが呼び出される順番によって異なります。
PlotServiceは私によって書かれました。この実装では、Response.outputStreamとString idPOvalueから取得したOutputStreamをJavaメソッドに渡しています。次のようにplotParetoの実装は次のとおりです。
のでpublic OutputStream paretoPlot(OutputStream out, String po) throws IOException {
chart = buildParetoChart(po);// here the chart is actually built
bufferedImage = chart.createBufferedImage(350, 275);
ChartUtilities.writeBufferedImageAsJPEG(out, bufferedImage);
}
、必ず1つのアクションは、次のいずれかを発射する前に完了されるようにする方法はありますか?
ありがとうございます!
出力ストリームをフラッシュすることもできます。 – hvgotcodes