Я использую PrimeFaces версии 6.1. Мне нужно показать свои данные в формате диаграммы. Для этого я реализовал компонент GChart в виде ссылки https://www.primefaces.org/showcase-ext/sections/gchart/basic.jsf. Я добавил ссылку в форму и, щелкнув по этой ссылке, я отобразил диаграмму. Мне нужно показать другой график в этой форме. Поэтому у меня есть разные панели для отображения разных графиков при нажатии разных кнопок. когда страница загружается и при нажатии на ссылку в первый раз, диаграмма отображается правильно. В следующий раз, когда я нажму на ту же ссылку, вся страница станет пустой. Я искал ошибку в консоли, и ошибка появляется, как показано ниже:
Мне нужно обновить sh страницу, чтобы моя страница была в рабочем состоянии. Я попытался, указав идентификатор для тега pe: gChart, и когда я нажимаю на диаграмме ссылок, появляется страница, а на следующем щелчке страница становится пустой, и появляется ошибка, поскольку контейнер с новым заданным идентификатором не определен. Мой код представления выглядит так:
<script src="https://www.gstatic.com/charts/loader.js"></script>
<h:form id="dash">
<p:commandLink id="savButton" class="small-box-footer" action="#{dashboardMB.createPieModel1}" update="@form">
<h:outputLabel styleClass="np" value="#{text.Detail}"/>
<i class="fa fa-arrow-circle-right"></i>
</p:commandLink>
<p:panel header="#{text.Saving}" rendered="#{dashboardMB.savVisible}" id="panelSav" closable="false" toggleable="true" >
<p:outputPanel id="container1" layout="block">
<div id="savChart">
<pe:gChart value="#{dashboardMB.savingChartModel}" width="400" height="400"
title="Saving Wise">
</pe:gChart>
</div>
</p:outputPanel>
</p:panel>
Мой код управляемого бина выглядит так:
public void createPieModel1() {
isSavVisible=true;
DashboardModel dashObj=new DashboardModel();
dashObj=dashBoardEJB.getvalues();
chartSavingModel = new GChartModelBuilder()
.setChartType(GChartType.COLUMN)
.addColumns("Topping", "Slices")
.addRow("A", dashObj.getCount1())
.addRow("V", dashObj.getCount2())
.addRow("Z", dashObj.getCount3())
.addRow("W", dashObj.getCount4())
.build();
}