Почему пончарт Primefaces не работает?

#charts #primefaces #chart.js

#Диаграммы #primefaces #chart.js

Вопрос:

Я пытался использовать диаграмму пончиков из primefaces, потому что я использовал primefaces, но диаграмма не будет работать.

Итак, это мой XHTML

 <?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">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                template="/WEB-INF/templates/new-dashbord-landing-page.xhtml"
                xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
                xmlns:h="http://xmlns.jcp.org/jsf/html"
                xmlns:p="http://primefaces.org/ui"
                xmlns:f="http://xmlns.jcp.org/jsf/core">
    <ui:define name="postMetadata">
    </ui:define>

 <ui:define name="content">
    <div class="chart-donut">
        <p:donutChart model="#{bean.donutModel}"/>
     </div>
    </ui:define>
</ui:composition>
  

для p: donutChart в моем случае я не могу его использовать, я не знаю почему
, и это моя java

 import org.apache.poi.ss.usermodel.charts.ChartData;
import org.primefaces.model.chart.DonutChartModel;

import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.List;

    public class Bean {
    
        private DonutChartModel donutModel;
    
        @PostConstruct
        public void init() {
            donutModel = new DonutChartModel();
            ChartData data = new ChartData();
    
            DonutChartDataSet dataSet = new DonutChartDataSet();
            List<Number> values = new ArrayList<>();
            values.add(300);
            values.add(50);
            values.add(100);
            dataSet.setData(values);
    
            List<String> bgColors = new ArrayList<>();
            bgColors.add("rgb(255, 99, 132)");
            bgColors.add("rgb(54, 162, 235)");
            bgColors.add("rgb(255, 205, 86)");
            dataSet.setBackgroundColor(bgColors);
    
            data.addChartDataSet(dataSet);
            List<String> labels = new ArrayList<>();
            labels.add("Red");
            labels.add("Blue");
            labels.add("Yellow");
            data.setLabels(labels);
    
            donutModel.setData(data);
        }
    
        public DonutChartModel getDonutModel() {
            return donutModel;
        }
    }
  

и я использую тот же код, что и в документации primefaces. Я просто хочу использовать диаграмму: (

Ответ №1:

Проблема заключается в импорте для DonutChartModel. Вы используете более старую версию, используемую для компонентов p: chart. Для Charts.js компоненты на основе правильное имя пакета: org.primefaces.model.charts.donut.DonutChartModel

Немного не по теме, компонент также нуждается в аннотировании. например @Named , и @RequestScoped .