Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf primefaces图表在提交新请求时不更新_Jsf_Jsf 2_Primefaces - Fatal编程技术网

Jsf primefaces图表在提交新请求时不更新

Jsf primefaces图表在提交新请求时不更新,jsf,jsf-2,primefaces,Jsf,Jsf 2,Primefaces,我提交了数据并显示了图表,但当我通过在表单中插入新值提交数据时,图表不会自动更新。我看到的另一件事是,当我刷新页面时,它会更新图表,并使用新值显示图表。 例如,如果我给数值Wheat=40和Sugar=60并提交,它将显示图表。现在当我提交Wheat=90和Sugar=10时,它只会在页面上显示旧的图表。现在如果我刷新页面,将提供带有更新值的图表。如何解决该问题:(如果有问题,请提出解决方案。 这是我的代码 图表代码 <p:barChart id="horizontal"

我提交了数据并显示了图表,但当我通过在表单中插入新值提交数据时,图表不会自动更新。我看到的另一件事是,当我刷新页面时,它会更新图表,并使用新值显示图表。
例如,如果我给数值
Wheat=40Sugar=60
并提交,它将显示图表。
现在当我提交Wheat=90Sugar=10时,它只会在页面上显示旧的图表。
现在如果我刷新页面,将提供带有更新值的图表。
如何解决该问题:(如果有问题,请提出解决方案。
这是我的代码
图表代码

<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>

按钮代码

<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>

GetGraphValuesOnLanbGuageBase方法

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

    }
public void getGraphValuesOnLanguageBasis(){
categoryModel=null;
resList=(ArrayList)serviceObj
.getChartByLanguage(等级、语言);
if(图表类型等信号案例(“条形”)
||chartType.equalsIgnoreCase(“线”)
||chartType.equalsIgnoreCase(“列”)){
categoryModel=新的CartesianChartModel();
ChartSeries langChart=null;
for(int a=0;a对于(int z=0;z更改模型值后,图表不会自动更新,但可以通过ajax
更新它。例如,如果您有图表:

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

当页面加载时,图表应该是可见的……之后,所有ajax请求都会正确地呈现图表。
要做到这一点,只需在页面加载时为系列1提供(0,0)和系列2提供(0,0)之类的伪系列数据,然后一切正常

您是否使用
update=“chartOrItsWrapperID”更新图表或其包装器
你使用的按钮?发布你的代码…是的。你想看到哪个部分?你希望更新图表的按钮,以及你的图表,如果你有按钮,请在按钮上设置更新目标,如
ok akoskm:)thnx让我看看..还有一件事,如果您知道如何使用
实现ajax请求,我会使用它。如果您不知道如何使用
实现ajax,请参阅Daniel的代码示例。我尝试了这个方法,但也没有成功:(