Ошибка при создании Primefaces P ie Chart - PullRequest
1 голос
/ 09 апреля 2020

Я пытаюсь сгенерировать диаграмму P ie, используя PrimeFaces (V8.0 / 7.0). И ниже демо-код. ПРИМЕЧАНИЕ - Я запускаю эту демонстрацию на Glassfish5

import javax.annotation.PostConstruct;
import javax.inject.Named;
import org.primefaces.model.chart.PieChartModel;

@Named
public class PieDemoMBean {

    private PieChartModel model;

    @PostConstruct
    public void init(){
        model=new PieChartModel();
        model.set("Red", 25);
        model.set("Green", 25);
        model.set("Blue", 25);
        model.set("Black", 25);
        model.setShowDataLabels(true);
    }

    public PieChartModel getModel() {
        return model;
    }

}

и JSF Page

<html xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
                xmlns:h="http://xmlns.jcp.org/jsf/html"
                xmlns:p="http://primefaces.org/ui">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        <h1>Pi Chart Demo</h1>
        <div>
            <p:chart type="pie" responsive="true" model="#{pieDemoMBean.model}"/>

        </div>

    </h:body>
</html>

И, наконец, вот журнал ошибок

Error Rendering View[/PiDemo.xhtml]
java.lang.NullPointerException
    at org.primefaces.component.chart.renderer.PieRenderer.encodeData(PieRenderer.java:43)
    at org.primefaces.component.chart.renderer.BasePlotRenderer.render(BasePlotRenderer.java:38)

Пожалуйста, сообщите.

1 Ответ

1 голос
/ 10 апреля 2020

Теперь проблема решена, поскольку я внес некоторые изменения в код и переместил конструкцию диаграммы P ie из метода init () в метод getModel (), как показано ниже -

@PostConstruct
public void init(){

}

public PieChartModel getModel() {
        model=new PieChartModel();
        model.set("Red", 25);
        model.set("Green", 25);
        model.set("Blue", 25);
        model.set("Black", 25);
        model.setShowDataLabels(true);
        return model;
    }

И новый код работает отлично !! (хотя это сбило меня с толку, поскольку управляемый компонент - RequestScoped, и код в методе init () должен был работать одинаково хорошо)

...