[RESOLVIDO]Não carrega imagem do gráfico na página

2 respostas
donny

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

2 Respostas

Jesuino_Master

Compartilha a solucão!!!

donny

Bom dia Jesuino Master,

Vi que você é engenheiro em JBoss. Preciso de uma ajuda sua, se for posível. Não estou conseguindo fazer deploy no JBoss 6 final uma aplicação com JSF 2.0 + PrimeFaces + Spring 3.0.5 + Hibernate. Posso postar os erros neste post mesmo?

Segue abaixo a implementação da solução:

ManagerBean:

public void gerarGrafico() {
        try {
            FacesContext contexto = FacesContext.getCurrentInstance();
            HttpSession sessao = (HttpSession) contexto.getExternalContext().getSession(false);
            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 file = new File(t);

            ChartUtilities.saveChartAsPNG(file, chart, 600, 400);
            this.grafico = new DefaultStreamedContent(new FileInputStream(file), "image/png");

        } catch (Exception e) {
            e.printStackTrace();
            e.getMessage();
            log.severe(e.getMessage());
        }
    }

Página xhtml:

<p:dialog header="Gráfico" widgetVar="graficoDialog"
                            resizable="false" width="800" showEffect="slide" modal="true"
                            hideEffect="slide" >
                            <h:panelGrid id="display" columns="1">
                                    <img src="#{facesContext.externalContext.requestContextPath}/img/#{calcularControle.nomeGrafico}"></img>
                            </h:panelGrid>
                </p:dialog>
Criado 23 de março de 2011
Ultima resposta 25 de mar. de 2011
Respostas 2
Participantes 2