提交新请求时,primefaces图表未更新

编程入门 行业动态 更新时间:2024-10-09 11:26:06
本文介绍了提交新请求时,primefaces图表未更新的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我提交数据并显示一个图表,但是再次通过在表单中​​插入新值提交数据时,图表本身不会更新.我看到的另一件事是,当我刷新页面时,它会使用显示新值. 例如,如果我给出值 Wheat = 40 和 Sugar = 60 并提交,它将显示图表.现在,当我提交了 Wheat = 90 和 Sugar = 10 ,它什么也没有显示,但是页面上仍然存在旧图表.现在,如果我刷新页面,则该图表如何摆脱这个问题:(如果有的话,请提出一种解决方案. 这是我的代码 图表代码

I submit data and a chart has been displayed But again when I submit it by inserting new values in form,chart doesn't update itself.Another thing I saw is when I refresh the page then it update the chart and chart with new values get display. For instance If I give values Wheat=40 and Sugar=60and submit , It will display the chart.Now when I submit Wheat=90 and Sugar=10 , it displays nothing but the old chart remain present on the page.Now If I refresh the page , The chart with updated values will be availabe.How can I get rid of that problem :( Please suggest a solution if any one have. Here is my code Chart 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" />

按钮代码

<h:commandButton id="btnLanguage" action="#{reportingCharts.getGraphValuesOnLanguageBasis}" value="Plot Chart Language"> </h:commandButton>

getGraphValuesOnLanbguageBasis方法

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(); }

推荐答案

更改模型值后,图表不会自动更新,但是可以通过ajax update对其进行更新.例如,如果您有一个图表:

The chart won't update itself after you change the model values but you can update it through ajax. For example if you have a chart:

<p:barChart id="myBarChart" value=#{yourChartBean.chartModel} ..../>

和一个将新值发送到后备bean的selecteOneMenu,定义一个将更新后备bean中的模型的方法:

and a selecteOneMenu which sends new values to your backing bean, define a method which will update the model in your backing bean:

<p:selectOneMenu id="aMenu" value="#{yourChartBean.menuValue}"> <p:ajax event="change" update="myBarChart" listener="#{yourChartBean.refreshChart()}"/> <f:selectItem itemLabel="This value" itemValue="tv"/> <f:selectItem itemLabel="Another value" itemValue="av"/> </p:selectOneMenu>

在这种情况下,refreshChart()方法用于更新图表模型:

in this case the refreshChart() method is intended to update your chart model:

public void refreshChart() { buildChart(); } private void buildChart() { chartModel = new CartesianChartModel(); ChartSeries series1 = new ChartSeries(); ... ChartSeries series2 = new ChartSeries(); ... categoryModel.addSeries(series1); categoryModel.addSeries(series2); }

更多推荐

提交新请求时,primefaces图表未更新

本文发布于:2023-10-10 22:06:03,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1479887.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:图表   primefaces

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!