primefaces charts nicht aktualisiert, wenn eine neue Anfrage senden
Ich senden von Daten und ein Diagramm angezeigt wurde, Aber wieder, wenn ich behaupte, dass es durch das einfügen neuer Werte in form,Diagramm aktualisiert nicht von selbst.Eine andere Sache, die ich sah, ist, wenn ich die Seite aktualisieren, dann aktualisiert das Diagramm und das Diagramm mit den neuen Werten angezeigt.
Zum Beispiel Wenn ich Werte
Weizen=40 und Zucker=60
und Einreichen , Es erscheint im display das Diagramm.
Wenn ich jetzt Einreichen Weizen=90 und Zucker=10 , es zeigt nichts an, aber die alte Grafik weiterhin auf der Seite vorhanden.
Wenn ich nun die Seite aktualisieren , wird Das Diagramm mit aktualisierten Werte verfügbar.
Wie kann ich loswerden, dass problem 🙁 Bitte eine Lösung vorschlagen, wenn jeder eine haben.
Hier ist mein code
Diagramm-Code
<p:barChart id="horizontal"
value="#{reportingCharts.categoryModel}" legendPosition="se"
style="width:635px;height:500px" title="Horizontal Bar Chart"
orientation="horizontal" min="0" max="150" animate="true"
zoom="true" barMargin="90"
rendered="#{chartsRendering.barCharts}" showDatatip="true" shadow="true" />
Taste Code
<h:commandButton id="btnLanguage" action="#{reportingCharts.getGraphValuesOnLanguageBasis}"
value="Plot Chart Language">
</h:commandButton>
getGraphValuesOnLanbguageBasis Methode
public void getGraphValuesOnLanguageBasis() {
categoryModel = null;
resList = (ArrayList<ChartResult>) serviceObj
.getChartByLanguage(ranks, language);
if (chartType.equalsIgnoreCase("bar")
|| chartType.equalsIgnoreCase("line")
|| chartType.equalsIgnoreCase("column")) {
categoryModel = new CartesianChartModel();
ChartSeries langChart = null;
for (int a = 0; a < ranks.length; a++) {
langChart = new ChartSeries();
if(a == 0){
for(int z=0;z<language.length;z++){
langChart.set(languageMap.get(Integer.parseInt(language[z])),0);
}
}
String rank = "";
boolean rankAvailable = false;
for (int x = 0; x < resList.size(); x++) {
if(Integer.parseInt(resList.get(x).getRankId()) == Integer.parseInt(ranks[a])){
rank = resList.get(x).getRankName();
x = resList.size();
rankAvailable = true;
}
}
if(rankAvailable == false){
langChart.setLabel(rankMap.get(Integer.parseInt(ranks[a])));
}
else{
langChart.setLabel(rank);
}
for (int x = 0; x < resList.size(); x++) {
if (Integer.parseInt(resList.get(x).getRankId()) == Integer
.parseInt(ranks[a]) && rankAvailable == true) {
langChart.set(languageMap.get(Integer.parseInt(resList.get(x).getCriteria())), Integer
.parseInt(resList.get(x).getNoOfPersons()));
}
}
categoryModel.addSeries(langChart);
}
} else if (chartType.equalsIgnoreCase("pie")) {
pieModel = new PieChartModel();
for (int x = 0; x < resList.size(); x++) {
pieModel.set(languageMap.get(Integer.parseInt(resList.get(x).getCriteria())), Integer
.parseInt(resList.get(x).getNoOfPersons()));
}
}
ChartsRendering chartRenderer1 = (ChartsRendering) FacesContext
.getCurrentInstance().getExternalContext().getSessionMap()
.get("chartsRendering");
if (chartType.equalsIgnoreCase("bar")) {
chartRenderer1.showBarChart();
} else if (chartType.equalsIgnoreCase("line"))
chartRenderer1.showLineChart();
else if (chartType.equalsIgnoreCase("column"))
chartRenderer1.showColumnChart();
else if (chartType.equalsIgnoreCase("pie"))
chartRenderer1.showPieChart();
}
- aktualisieren Sie das Diagramm oder den wrapper mit der
update="chartOrItsWrapperID"
der Schaltfläche, die Sie verwenden ? veröffentlichen Sie Ihren code... - ja sicher .welcher Teil, den Sie sehen wollen?
- die Schaltfläche, die Sie erwarten, zu aktualisieren Sie Ihre Diagramm-und chart
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das Diagramm nicht selbst aktualisieren, nachdem Sie das Modell ändern Werte, aber Sie können
update
es durch ajax. Zum Beispiel, wenn Sie ein Diagramm:und ein selecteOneMenu sendet die neuen Werte an Ihre backing-bean, eine Methode definieren, die eine Aktualisierung des Modells in Ihrer backing-bean:
in diesem Fall die
refreshChart()
Methode dafür konzipiert ist, aktualisieren Sie Ihre Grafik Modell:<p:button .... ajax="true" update="myBarChart" actionListener="#{yourChartBean.refreshChart()}"/>
<h:commandButton/>
es wird für Sie arbeiten.<h:commandButton/>
siehe Daniel ' s code zum Beispiel.getGraphValuesOnLanguageBasis
Methode, könnte Sie erweitern Ihre Frage mit der Quelle dieser Methode? AuchgetGraphValuesOnLanguageBasis
ist mehr als verwirrend erscheinen, Sie sollten Namen wierefreshGraphValuesOnLanguageBasis
.p:barChart
. in der Tat sollte es nicht nichts anderes tun, als: 1. aufnehmen der Werte, 2. platzieren Sie inChartSeries
. 3. das Diagramm hinzufügen-Serie zu Ihrem Modell. entfernen Sie einfach diese inline-prüfen und trennen Sie Ihre barChart-Update-Teil in eine andere Methode.Diagramm sichtbar sein soll, wenn die Seite geladen wird...nach, dass alle ajax-request richtig macht Ihrem Diagramm.
Zu tun, dass nur eine dummy-Serie Daten wie (0,0) für die Serie 1 und (0,0) für Serie 2, wenn die Seite geladen ist, nach, dass alles funktioniert