pieChart?

Pessoal estou fazendo um gráfico com primefaces mas não ta dando certo.

GRAFICO BEAN


package br.app.sisau.jsf;

import br.app.sisau.beans.PessoaBean;
import br.app.sisau.daos.PessoaJpaDao;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.ManagedBean;
import org.primefaces.model.chart.PieChartModel;

/**
 *
 * @author jr
 */
@ManagedBean
public class GraficoBean implements Serializable {
    
    private PieChartModel modelo;
    private List<PessoaBean> listaPessoa;

    public GraficoBean() {
        criarModeloGrafico();
    }

    public PieChartModel getModelo() {
        return modelo;
    }

    public void setModelo(PieChartModel modelo) {
        this.modelo = modelo;
    }

    private void criarModeloGrafico() {
        
        modelo = new PieChartModel();
        List<PessoaBean> listaPessoa = new ArrayList<PessoaBean>();
        PessoaJpaDao pessoaJpaDao = new PessoaJpaDao();
        listaPessoa = pessoaJpaDao.todos();
        for (PessoaBean pessoabean : listaPessoa) {
              modelo.set(pessoabean.getNome(),pessoabean.getSobrenome());
            
        }
    }
}

    

PESSOA JPA DAO

 public List<PessoaBean> todos() {
        List<PessoaBean> lstPessoas = null;
        EntityManager em = getEntityManager();
        try {
            Query queryPessoa = em.createNamedQuery("PessoaBean.findAll");
            lstPessoas = queryPessoa.getResultList();
        } catch (NoResultException nre) {
            getLogger().debug(nre.getStackTrace());
        } catch (Exception e) {
            getLogger().debug(e.getStackTrace());
        }
        return lstPessoas;
    
}

XHTML


<html xmlns="http://www.w3.org/1999/xhtml"

      xmlns:p="http://primefaces.prime.com.tr/ui"

      xmlns:h="http://java.sun.com/jsf/html">

    <h:head>

        <title>Gráficos com JSF 2.0</title>

    </h:head>

    <h:body>

        <p:pieChart value="#{graficoBean.modelo}"

                    legendPosition="w"

                    title="TESTE"

                    style="width:800px;height:600px;"/>

    </h:body>

</html>

pego esta mensagem da IDE:

[quote=juniorsatanas]Pessoal estou fazendo um gráfico com primefaces mas não ta dando certo.

GRAFICO BEAN


package br.app.sisau.jsf;

import br.app.sisau.beans.PessoaBean;
import br.app.sisau.daos.PessoaJpaDao;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.ManagedBean;
import org.primefaces.model.chart.PieChartModel;

/**
 *
 * @author jr
 */
@ManagedBean
public class GraficoBean implements Serializable {
    
    private PieChartModel modelo;
    private List<PessoaBean> listaPessoa;

    public GraficoBean() {
        criarModeloGrafico();
    }

    public PieChartModel getModelo() {
        return modelo;
    }

    public void setModelo(PieChartModel modelo) {
        this.modelo = modelo;
    }

    private void criarModeloGrafico() {
        
        modelo = new PieChartModel();
        List<PessoaBean> listaPessoa = new ArrayList<PessoaBean>();
        PessoaJpaDao pessoaJpaDao = new PessoaJpaDao();
        listaPessoa = pessoaJpaDao.todos();
        for (PessoaBean pessoabean : listaPessoa) {
              modelo.set(pessoabean.getNome(),pessoabean.getSobrenome());
            
        }
    }
}

    

PESSOA JPA DAO

 public List<PessoaBean> todos() {
        List<PessoaBean> lstPessoas = null;
        EntityManager em = getEntityManager();
        try {
            Query queryPessoa = em.createNamedQuery("PessoaBean.findAll");
            lstPessoas = queryPessoa.getResultList();
        } catch (NoResultException nre) {
            getLogger().debug(nre.getStackTrace());
        } catch (Exception e) {
            getLogger().debug(e.getStackTrace());
        }
        return lstPessoas;
    
}

XHTML


<html xmlns="http://www.w3.org/1999/xhtml"

      xmlns:p="http://primefaces.prime.com.tr/ui"

      xmlns:h="http://java.sun.com/jsf/html">

    <h:head>

        <title>Gráficos com JSF 2.0</title>

    </h:head>

    <h:body>

        <p:pieChart value="#{graficoBean.modelo}"

                    legendPosition="w"

                    title="TESTE"

                    style="width:800px;height:600px;"/>

    </h:body>

</html>

pego esta mensagem da IDE:

[quote]
method set in class org.primefaces.model.chart.PieChartModel cannot be applied to given types;
required: java.lang.String,java.lang.Number
found: java.lang.String,java.lang.String
reason: actual argument java.lang.String cannot be converted to java.lang.Number by method invocation conversion

(Alt-Enter mostra dicas)
[/quote][/quote]

[i]required: java.lang.String,java.lang.Number
found: java.lang.String,java.lang.String

O que você queria mostrar neste gráfico?

Você colocou como dado o nome e o sobrenome de uma pessoa… ele não vai conseguir montar um gráfico deste jeito…
Ele aceita uma String como primeiro parametro e o segundo deve ser um numero para ele conseguir gerar…

Se por exemplo fosse assim:[/i]

private void criarModeloGrafico() {
        
        modelo = new PieChartModel();
        List<PessoaBean> listaPessoa = new ArrayList<PessoaBean>();
        PessoaJpaDao pessoaJpaDao = new PessoaJpaDao();
        listaPessoa = pessoaJpaDao.todos();
        for (PessoaBean pessoabean : listaPessoa) {
              modelo.set(pessoabean.getNome(),pessoabean.getIdade()); // Exemplo
            
        }
    }

Ele criaria seu gráfico …

kkkkkkkkkkkkkk
as 4 da madrugada eu li a mensagem após tomar um café… e vi isso obrigado amigo @ BOM DIA

AVISO: JSF1087: Não foi possível gerar a página de erro de Facelets porque a resposta já foi enviada. GRAVE: javax.faces.FacesException javax.faces.FacesException at com.sun.faces.context.ExceptionHandlerImpl.handle(ExceptionHandlerImpl.java:142) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:119) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1542) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195) at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849) at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746) at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045) at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228) at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) at com.sun.grizzly.ContextTask.run(ContextTask.java:71) at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) at java.lang.Thread.run(Thread.java:662) Caused by: java.lang.NullPointerException at org.primefaces.component.chart.pie.PieChartRenderer.encodeData(PieChartRenderer.java:68) at org.primefaces.component.chart.pie.PieChartRenderer.encodeScript(PieChartRenderer.java:51) at org.primefaces.component.chart.pie.PieChartRenderer.encodeEnd(PieChartRenderer.java:36) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1764) at javax.faces.render.Renderer.encodeChildren(Renderer.java:168) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845) at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:55) at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:43) at org.primefaces.component.panel.PanelRenderer.encodeContent(PanelRenderer.java:191) at org.primefaces.component.panel.PanelRenderer.encodeMarkup(PanelRenderer.java:114) at org.primefaces.component.panel.PanelRenderer.encodeEnd(PanelRenderer.java:55) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1764) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760) at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402) at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) ... 26 more

to pegando este erro… NULL POINT…

[i]Posta o codigo completo do que você ta fazendo…

Fica dificil sabe só com o erro… ^^[/i]

<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets"> <h:head> <title>Gráficos com JSF 2.0</title> </h:head> <h:body> <p:pieChart value="#{graficoBean.modelo}" legendPosition="w" title="A PORRA DO TITULO" style="width:800px;height:600px;"/> </h:body> </html>



package br.app.sisau.jsf;

import br.app.sisau.beans.PessoaBean;
import br.app.sisau.daos.PessoaJpaDao;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.ManagedBean;
import org.primefaces.model.chart.PieChartModel;

/**
 *
 * @author jr
 */
@ManagedBean
//@RequestScoped
public class GraficoBean implements Serializable {
    
    private PieChartModel modelo;
    private List<PessoaBean> listaPessoa;

    public GraficoBean() {
        criarModeloGrafico();
    }

    public PieChartModel getModelo() {
        return modelo;
    }

    public void setModelo(PieChartModel modelo) {
        this.modelo = modelo;
    }

    private void criarModeloGrafico() {
        
        modelo = new PieChartModel();
        List<PessoaBean> listaPessoa = new ArrayList<PessoaBean>();
        PessoaJpaDao pessoaJpaDao = new PessoaJpaDao();
        listaPessoa = pessoaJpaDao.todos();
        for (PessoaBean pessoabean : listaPessoa) {
           modelo.set(pessoabean.getNome(),pessoabean.getId());
        }
    }
}

    

package br.app.sisau.daos;

import br.app.sisau.beans.PessoaBean;
import br.app.sisau.beans.PessoaBean_;
import br.app.sisau.config.GenericJpaDao;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.Query;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import org.apache.log4j.Logger;

/**
 *
 * @author Herick
 */
public class PessoaJpaDao extends GenericJpaDao<PessoaBean> {

    private static Logger logger = Logger.getLogger(PessoaJpaDao.class);
    private List<PessoaBean> todos;

    public PessoaJpaDao() {
        super(PessoaBean.class);
    }

    public PessoaBean findByUsername(String username) throws Exception {
        PessoaBean pessoa = null;
        EntityManager em = getEntityManager();
        try {
            Query queryPessoaByUsername = em.createNamedQuery("PessoaBean.findByUsername");
            queryPessoaByUsername.setParameter("username", username);
            pessoa = (PessoaBean) queryPessoaByUsername.getSingleResult();
        } catch (NoResultException nre) {
            throw ResultadoException();
        } catch (Exception e) {
            throw e;
        }

        return pessoa;
    }

    public List<PessoaBean> pesquisar() {
        List<PessoaBean> lstPessoas = null;
        EntityManager em = getEntityManager();
        try {
            Query queryPessoa = em.createNamedQuery("PessoaBean.findAll");
            lstPessoas = queryPessoa.getResultList();
        } catch (NoResultException nre) {
            getLogger().debug(nre.getStackTrace());
        } catch (Exception e) {
            getLogger().debug(e.getStackTrace());
        }
        return lstPessoas;
    }
    
 public List<PessoaBean> todos() {
        List<PessoaBean> lstPessoas = null;
        EntityManager em = getEntityManager();
        try {
            Query queryPessoa = em.createNamedQuery("PessoaBean.findAll");
            lstPessoas = queryPessoa.getResultList();
        } catch (NoResultException nre) {
            getLogger().debug(nre.getStackTrace());
        } catch (Exception e) {
            getLogger().debug(e.getStackTrace());
        }
        return lstPessoas;
    
}
         
    public List<PessoaBean> pesquisar(String termoPesquisa) {
        List<PessoaBean> lstPessoas = null;
        EntityManager em = getEntityManager();
        try {
            Query queryPessoa = em.createNamedQuery("PessoaBean.findByKeyword");
            queryPessoa.setParameter("keyword", "%" + termoPesquisa + "%");
            lstPessoas = queryPessoa.getResultList();
        } catch (NoResultException nre) {
            getLogger().debug(nre.getStackTrace());
        } catch (Exception e) {
            getLogger().debug(e.getStackTrace());
        }
        return lstPessoas;
    }

    public PessoaBean findByEmail(String email) {
        PessoaBean pessoa = null;
        EntityManager em = getEntityManager();
        try {
            Query queryPessoaByUsername = em.createNamedQuery("PessoaBean.findByEmail");
            queryPessoaByUsername.setParameter("email", email);
            pessoa = (PessoaBean) queryPessoaByUsername.getSingleResult();
        } catch (NoResultException nre) {
            getLogger().debug(nre.getStackTrace());
        } catch (Exception e) {
            getLogger().debug(e.getStackTrace());
        }

        return pessoa;
    }

    public PessoaBean findByCpf(String cpf) {
        PessoaBean pessoa = null;
        EntityManager em = getEntityManager();
        try {
            Query queryPessoaByUsername = em.createNamedQuery("PessoaBean.findByCpf");
            queryPessoaByUsername.setParameter("cpf", cpf);
            pessoa = (PessoaBean) queryPessoaByUsername.getSingleResult();

        } catch (NoResultException nre) {
            getLogger().debug(nre.getStackTrace());
        } catch (Exception e) {
            getLogger().debug(e.getStackTrace());
        }

        return pessoa;
    }

    public List<PessoaBean> pesquisarCriteria(String termoPesquisa) {

        List<PessoaBean> lstPessoas = null;

        EntityManager em = getEntityManager();
        CriteriaBuilder builder = em.getCriteriaBuilder();

        CriteriaQuery<PessoaBean> criteria = builder.createQuery(PessoaBean.class);
        Root<PessoaBean> root = criteria.from(PessoaBean.class);

        List<Predicate> predicados = new ArrayList<Predicate>();

        if (!"".equals(termoPesquisa) && termoPesquisa != null) {
            Predicate username = builder.like(builder.upper(root.get(PessoaBean_.username)), ("%" + termoPesquisa + "%").toUpperCase());
            Predicate nome = builder.like(builder.upper(root.get(PessoaBean_.nome)), ("%" + termoPesquisa + "%").toUpperCase());
            Predicate rg = builder.like(root.get(PessoaBean_.rg), ("%" + termoPesquisa + "%"));
            Predicate cpf = builder.like(root.get(PessoaBean_.cpf), ("%" + termoPesquisa + "%"));
            //Predicate email = builder.like(root.get(PessoaBean_.email), ("%" + termoPesquisa + "%"));

            Predicate soma = builder.or(username, nome, rg, cpf);
            predicados.add(soma);
        }

        criteria.where(builder.and(predicados.toArray(new Predicate[]{})));

        criteria.orderBy(builder.asc(root.get(PessoaBean_.nome)));

        Query queryPessoas = em.createQuery(criteria);
        lstPessoas = queryPessoas.getResultList();

        return lstPessoas;
    }

    private Exception ResultadoException() {
        throw new UnsupportedOperationException("Usuário não encontrado");
    }

    public static Logger getLogger() {
        return logger;
    }

    public static void setLogger(Logger aLogger) {
        logger = aLogger;
    }

    public List<PessoaBean> getTodos() {
        return todos;
    }

    public void setTodos(List<PessoaBean> todos) {
        this.todos = todos;
    }
}

[i]Aparentemente parece que ele não ta conseguindo montar seu gráfico pq ñ ta passando no método…

Já tentou debugar o código e ve se ele ta passando?
Já tentou também alterar o escopo do bean? ViewScoped ou SessionScoped …

Mais primeiro tenta debuga pra v c ta passando… ^^[/i]

vou dormir, madruguei… vou tentar novamente tudo isso e mais algumas coisas… obrigado.

Cara, fiquei com este problemas alguns dias, e na verdade ainda não sei do que se trata, provavelmente é alguma configuração que está faltando.

Enfim, consegui contorná-lo da seguinte forma.

1 baixei o projeto do showcase da versão 3.5 do primefaces.
2 fiz um teste lá e o pieChart funcionou.
3 inseri meus pacotes e minhas páginas .xhtml no projeto do showcase.
4 mudei a tag de js para xhtml no web.xml

Faces Servlet *.xhtml

5 Por fim exclui coisas desse projeto que eu não usava, porém, deixei os pacotes que vem no src.
6 Alterei o nome do showcase para o que eu queria usar.

Enfim, to usando normalmente assim, porém, o projeto antigo que tava dando erro não consegui arrumar, mas como preciso terminar meu TCC segui a vida.

Espero que ajude, abs.