je dois montrer quatre graphiques sur une page Grails dans une présentation de la grille avec des positions 11, 12, 21 et 22. Chaque tableau est construit avec un code similaire à:Comment utiliser plusieurs avec un OutputStream
<img src="${createLink(controller:'paretoChart', action:'buildParetoChart11')}"/>
le code de l'action de construction graphique est:
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
}
Java p11.paretoPlot (out, idPOvalue) retourne un BufferedImage du tableau à l'intérieur du OutputStream, mais il ne fonctionne que pour un graphique. Les trois autres graphiques varient selon l'ordre dans lequel toutes les actions sont appelées.
PlotService a été écrit par moi, oui. Dans cette implémentation, je passe le OutputStream que j'ai reçu de response.outputStream et de String idPOvalue à la méthode Java. La mise en œuvre de plotPareto est la suivante:
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);
}
Alors, est-il un moyen de faire en sorte qu'une action soit terminée avant de tirer le prochain?
Merci d'avance!
Vous pouvez également essayer de vider le flux de sortie. – hvgotcodes