Question

Je suis en train de faire un projet où je suis en utilisant JSF 2.0 et Primefaces composants de l'interface.

Il y a un élément de vue onglet avec des onglets, « Jour », « Semaine » et « Mois ». Dans tous onglet, je dois afficher les graphiques Bar dans chacun. Pour la même, je liste à l'aide de trois aller chercher la méthode des trois suivantes. Dans le code suivant, UpdateCountHelper est Récupération des données de base de données. Ainsi, UpdateCountHelper prend un peu de temps pour la récupération des données.

est un code pour récupérer les listes:

public List<UpdateCount> getDayUpdateCounts() {
        if (projectFlag == true) {
            if (displayFlag == 1) {
                dayUpdateCounts = UpdateCountHelper.getProjectUpdates(1);
            } else {
                dayUpdateCounts = UpdateCountHelper.getProjectUpdates(name, 1);
            }
        } else {
            dayUpdateCounts = UpdateCountHelper.getResourceUpdates(userName, 1);
        }

        return dayUpdateCounts;
    }

    public List<UpdateCount> getMonthUpdateCounts() {
        if (projectFlag == true) {
            if (displayFlag == 1) {
                monthUpdateCounts = UpdateCountHelper.getProjectUpdates(30);
            } else {
                monthUpdateCounts = UpdateCountHelper.getProjectUpdates(name, 30);
            }
        } else {
            monthUpdateCounts = UpdateCountHelper.getResourceUpdates(userName, 30);
        }

        return monthUpdateCounts;
    }

    public List<UpdateCount> getWeekUpdateCounts() {
        if (projectFlag == true) {

            if (displayFlag == 1) {
                weekUpdateCounts = UpdateCountHelper.getProjectUpdates(7);
            } else {
                weekUpdateCounts = UpdateCountHelper.getProjectUpdates(name, 7);
            }
        } else {
            weekUpdateCounts = UpdateCountHelper.getResourceUpdates(userName, 7);
        }

        return weekUpdateCounts;
    }

est un code pour l'interface utilisateur de Bar Graphique:

<p:panel id="Chart">
                <p:tabView dynamic="false" cache="false">
                    <p:tab title="Day">
                        <p:panel id="chartDayPanel">
                            <center>
                                <h:outputText id="projectWiseDayText" rendered="#{systemUtilizationServiceBean.projectFlag}" value="Project Wise Day Update"/>
                                <p:columnChart id="projectWiseDayUpdateChart" rendered="#{systemUtilizationServiceBean.projectFlag}" value="#{systemUtilizationServiceBean.dayUpdateCounts}" var="dayWiseUpdate" xfield="#{dayWiseUpdate.name}" height="200px" width="640px">
                                    <p:chartSeries label="Project Wise Current Day Update" value="#{dayWiseUpdate.noUpdates}"/>
                                </p:columnChart>
                                <h:outputText id="resourceWiseDayText" rendered="#{systemUtilizationServiceBean.resourceFlag}" value="Resource Wise Day Update"/>
                                <p:columnChart id="resourceWiseDayUpdateChart" rendered="#{systemUtilizationServiceBean.resourceFlag}" value="#{systemUtilizationServiceBean.dayUpdateCounts}" var="dayWiseResourceUpdate" xfield="#{dayWiseResourceUpdate.name}" height="200px" width="640px">
                                    <p:chartSeries label="Resource Wise Current Day Update" value="#{dayWiseResourceUpdate.noUpdates}"/>
                                </p:columnChart>
                            </center>
</p:panel>
                    </p:tab>
                    <p:tab title="Week">
                        <p:panel id="chartWeekPanel">
                            <center>
                                <h:outputText id="projectWiseWeekText" rendered="#{systemUtilizationServiceBean.projectFlag}" value="Project Wise Week Update"/>
                                <p:columnChart id="projectWiseWeekUpdateChart" rendered="#{systemUtilizationServiceBean.projectFlag}" value="#{systemUtilizationServiceBean.weekUpdateCounts}" var="weekWiseUpdate" xfield="#{weekWiseUpdate.name}" height="200px" width="640px">
                                    <p:chartSeries label="Project Wise Current Week Update" value="#{weekWiseUpdate.noUpdates}"/>
                                </p:columnChart>
                                <h:outputText id="resourceWiseWeekText" rendered="#{systemUtilizationServiceBean.resourceFlag}" value="Resource Wise Week Update"/>
                                <p:columnChart id="resourceWiseWeekUpdateChart" rendered="#{systemUtilizationServiceBean.resourceFlag}" value="#{systemUtilizationServiceBean.weekUpdateCounts}" var="weekWiseResourceUpdate" xfield="#{weekWiseResourceUpdate.name}" height="200px" width="640px">
                                    <p:chartSeries label="Resource Wise Current Week Update" value="#{weekWiseResourceUpdate.noUpdates}"/>
                                </p:columnChart>
                            </center>
</p:panel>
                    </p:tab>
                    <p:tab title="Month">
                        <p:panel id="chartMonthPanel">
                            <center>
                                <h:outputText id="projectWiseMonthText" rendered="#{systemUtilizationServiceBean.projectFlag}" value="Project Wise Month Update"/>
                                <p:columnChart id="projectWiseMonthUpdateChart" rendered="#{systemUtilizationServiceBean.projectFlag}" value="#{systemUtilizationServiceBean.monthUpdateCounts}" var="monthWiseUpdate" xfield="#{monthWiseUpdate.name}" height="200px" width="640px">
                                    <p:chartSeries label="Project Wise Current Month Update" value="#{monthWiseUpdate.noUpdates}"/>
                                </p:columnChart>
                                <h:outputText id="resourceWiseMonthText" rendered="#{systemUtilizationServiceBean.resourceFlag}" value="Resource Wise Month Update"/>
                                <p:columnChart id="resourceWiseMonthUpdateChart" rendered="#{systemUtilizationServiceBean.resourceFlag}" value="#{systemUtilizationServiceBean.monthUpdateCounts}" var="monthWiseResourceUpdate" xfield="#{monthWiseResourceUpdate.name}" height="200px" width="640px">
                                    <p:chartSeries label="Resource Wise Current Month Update" value="#{monthWiseResourceUpdate.noUpdates}"/>
                                </p:columnChart>
                            </center>
</p:panel>
                    </p:tab>
                </p:tabView>
            </p:panel>

Maintenant, je dois afficher les mêmes données dans d'autres TabView avec les mêmes onglets que mentionné ci-dessus et seule chose est maintenant, je dois afficher dans le graphique Pie. Maintenant en camembert, je suis en utilisant les mêmes listes. Donc, il va à nouveau chercher les données de base de données et de perdre du temps. Pour résoudre ce problème, je l'ai créé trois autres listes et ont donné seulement référence de ces listes précédentes. Donc, maintenant pas de base de données se produit fetching.

Le code d'application de la référence est:

public List<UpdateCount> getPieDayUpdateCounts() {

        pieDayUpdateCounts = dayUpdateCounts;
        return pieDayUpdateCounts;
    }

    public List<UpdateCount> getPieMonthUpdateCounts() {
        pieMonthUpdateCounts = monthUpdateCounts;
        return pieMonthUpdateCounts;
    }

    public List<UpdateCount> getPieWeekUpdateCounts() {
        pieWeekUpdateCounts = weekUpdateCounts;
        return pieWeekUpdateCounts;
    } 

Mais, ici le problème qui se pose est que seul tableau dont l'onglet est activé est affiché, mais les autres 2 autres onglets ne montrent aucun tableau.

Le code pour l'interface utilisateur est:

<p:tabView dynamic="false" cache="false">
                <p:tab title="Day">
                    <center>
                        <p:panel id="pieChartDayPanel">
                            <h:outputText id="projectWiseDayPieChartText" rendered="#{systemUtilizationServiceBean.projectFlag}" value="Project Wise Day Update"/>
                            <p:pieChart id="projectWiseDayUpdatePieChart" rendered="#{systemUtilizationServiceBean.projectFlag}" value="#{systemUtilizationServiceBean.dayUpdateCounts}" var="dayWisePieUpdate" categoryField="#{dayWisePieUpdate.name}" dataField="#{dayWisePieUpdate.noUpdates}" height="200" width="200"/>
                            <h:outputText id="resourceWiseDayPieChartText" rendered="#{systemUtilizationServiceBean.resourceFlag}" value="Resource Wise Day Update"/>
                            <p:pieChart id="resourceWiseDayUpdatePieChart" rendered="#{systemUtilizationServiceBean.resourceFlag}" value="#{systemUtilizationServiceBean.dayUpdateCounts}" var="dayWiseResourcePieUpdate" categoryField="#{dayWiseResourcePieUpdate.name}" dataField="#{dayWiseResourcePieUpdate.noUpdates}" height="200" width="200"/>
                        </p:panel>
                    </center>
                </p:tab>
                <p:tab title="Week">
                    <center>
                        <p:panel id="pieChartWeekPanel">
                            <h:outputText id="projectWiseWeekPieChartText" rendered="#{systemUtilizationServiceBean.projectFlag}" value="Project Wise Week Update"/>
                            <p:pieChart id="projectWiseWeekUpdatePieChart" rendered="#{systemUtilizationServiceBean.projectFlag}" value="#{systemUtilizationServiceBean.weekUpdateCounts}" var="weekWisePieUpdate" categoryField="#{weekWisePieUpdate.name}" dataField="#{weekWisePieUpdate.noUpdates}" height="200" width="200"/>
                            <h:outputText id="resourceWiseWeekPieChartText" rendered="#{systemUtilizationServiceBean.resourceFlag}" value="Resource Wise Week Update"/>
                            <p:pieChart id="resourceWiseWeekUpdatePieChart" rendered="#{systemUtilizationServiceBean.resourceFlag}" value="#{systemUtilizationServiceBean.weekUpdateCounts}" var="weekWiseResourcePieUpdate" categoryField="#{weekWiseResourcePieUpdate.name}" dataField="#{weekWiseResourcePieUpdate.noUpdates}" height="200" width="200"/>
                        </p:panel>
                    </center>
                </p:tab>
                <p:tab title="Month">
                    <center>
                        <p:panel id="pieChartMonthPanel">
                            <h:outputText id="projectWiseMonthPieChartText" rendered="#{systemUtilizationServiceBean.projectFlag}" value="Project Wise Month Update"/>
                            <p:pieChart id="projectWiseMonthUpdatePieChart" rendered="#{systemUtilizationServiceBean.projectFlag}" value="#{systemUtilizationServiceBean.monthUpdateCounts}" var="monthWisePieUpdate" categoryField="#{monthWisePieUpdate.name}" dataField="#{monthWisePieUpdate.noUpdates}" height="200" width="200"/>
                            <h:outputText id="resourceWiseMonthPieChartText" rendered="#{systemUtilizationServiceBean.resourceFlag}" value="Resource Wise Month Update"/>
                            <p:pieChart id="resourceWiseMonthUpdatePieChart" rendered="#{systemUtilizationServiceBean.resourceFlag}" value="#{systemUtilizationServiceBean.monthUpdateCounts}" var="monthWiseResourcePieUpdate" categoryField="#{monthWiseResourcePieUpdate.name}" dataField="#{monthWiseResourcePieUpdate.noUpdates}" height="200" width="200"/>
                        </p:panel>
                    </center>
                </p:tab>
            </p:tabView>

Quelle devrait être la raison derrière cela?

Était-ce utile?

La solution

Plutôt que d'essayer de conserver plusieurs copies de votre liste, utilisez JSF Scopes à gérer quand / combien de fois ils sont récupérés.

Portée bean de support à RequestScoped ou ViewScoped, de créer un procédé qui récupère les listes de la base de données (si l'on utilise le CDI, puis annoter un @PostConstruct de la méthode, autrement invoquer un PreRenderViewEvent ou dans le constructeur lui-même). Maintenant, accéder à vos listes via accesseurs simples.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top