如何动态更新p:图表

时间:2015-08-11 06:46:44

标签: jsf primefaces charts pie-chart

我想在饼图中动态显示数据库中的数据。仅显示数据,没有问题,但如果数量增加,饼图不会更新。我不知道如何更新图表。我使用PrimeFaces库。

所以这是我这个问题的主要代码:

@ManagedBean
public class Chart implements Serializable {

    private static final long serialVersionUID = 1L;
    private PieChartModel pieModel1;
    private int n = 0;
    private int j = 0;
    private int s = 0;
    private List<Erfasst> erfassungen;
    private EntityManagerFactory emf = Persistence
            .createEntityManagerFactory("CP Kontrolle");

    @PostConstruct
    public void init() {
        createPieModels();
    }

    private void createPieModels() {
        pieModel1 = new PieChartModel();
        EntityManager em = emf.createEntityManager();
        Query q = em.createQuery("SELECT e FROM Erfasst e");
        erfassungen = q.getResultList();

        for (Erfasst erf : erfassungen) {
            if (erf.getRechtsform().equals("natürliche Person")) {
                n++;
            } else if (erf.getRechtsform().equals("juristische Person")) {
                j++;
            } else {
                s++;
            }
        }

        pieModel1.set("natürliche Personen", n);
        pieModel1.set("juristische Personen", j);
        pieModel1.set("sonstige", s);

        pieModel1.setTitle("Erfassungen gesamt");
        pieModel1.setLegendPosition("e");
        pieModel1.setFill(false);
        pieModel1.setShowDataLabels(true);
        pieModel1.setDiameter(150);
    }

    public PieChartModel getPieModel1() {
        return pieModel1;
    }
}

在观点方面:

<p:chart type="pie"
         model="#{chart.pieModel1}"
         style="width:400px;height:300px"
         styleClass="chartPie" id="aufstellung" />

1 个答案:

答案 0 :(得分:0)

它不会在默认配置中自动更新(您必须更新它&#34;手动&#34;)。但是,您可以将图表与PrimePush(websocket)结合使用。

一个很好的例子是PF展示:http://www.primefaces.org/showcase/push/chart.xhtml(推送图表)