Boa noite a todos! Estou desenvolvendo uma aplicação web com JSF 2.0 com PrimeFaces 2.2.1 + Spring 3.0.5 + Hibernate + JFreechart. Estou gerando um gráfico com JFreeChart, no meu ManagerBean, conforme o código abaixo, até fiz testes gravando fisicamente, mas não é exibindo na página quando uso @Scope(“view”), porém se eu usar @Scope(“session”) no meu ManagerBean o gráfico é carregado no página, mas nesse caso tenho um outro problema, ao gerar um novo gráfico, segue aparecendo o primeiro gráfico gerado. Já fiz muitos testes e não consigo resolver esse problema.
Código do meu ManagerBean:
import org.springframework.context.annotation.Scope;
...
@ManagedBean
@Controller
@Scope("session")
public class CalcularControle implements Serializable {
private StreamedContent grafico;
....
getters e setters
...
public void gerarGrafico(DadosInternos d) {
try {
final XYDataset dataset = br.com.rkam.web.util.Grafico.createDataset(d, minimo, degrau);
final JFreeChart chart = br.com.rkam.web.util.Grafico.createChart(dataset);
File arquivoGrafico = new File("linha.png");
ChartUtilities.saveChartAsPNG(arquivoGrafico, chart, 600, 400);
this.grafico = new DefaultStreamedContent(new FileInputStream(arquivoGrafico), "image/png");
//FacesContext contexto = FacesContext.getCurrentInstance();
//HttpSession sessao = (HttpSession) contexto.getExternalContext().getSession(false);
// sessao.setAttribute("graficos", grafico);
} catch (Exception e) {
e.printStackTrace();
e.getMessage();
log.severe(e.getMessage());
}
}
Código da página xhtml:
<p:dialog header="Gráfico" widgetVar="graficoDialog"
resizable="false" width="800" showEffect="slide"
hideEffect="slide">
<h:panelGrid id="display" columns="1">
<f:facet name="header">
<p:graphicImage id="graficos" value="#{calcularControle.grafico}" />
</f:facet>
</h:panelGrid>
</p:dialog>
Desde já agradeço pela ajuda!
Att,
Donizete Waterkemper