Domanda

Sto facendo un progetto in cui sto utilizzando JSF 2.0 & primefaces componenti UI.

C'è una componente visualizzazione a schede con le schede, "Giorno", "Settimana" e "mese". In tutta scheda, devo visualizzare grafici a barre in ciascuno. Per lo stesso, io sono il recupero di tre elenco utilizzando il seguente metodo a tre. Nel codice seguente, UpdateCountHelper è il recupero dei dati dal database. Quindi, UpdateCountHelper sta prendendo un po 'di tempo per il recupero dei dati.

Questo è il codice per il recupero liste:

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

Questo è il codice per l'interfaccia utente del grafico a barre:

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

Ora, devo visualizzare stessi dati in altre TabView con stesse schede come detto sopra e unica cosa che è ora devo visualizzare nel grafico a torta. Ora, nel grafico a torta, io sto usando le stesse liste. Così, sarà di nuovo recuperare i dati dal database e perdite di tempo. Per risolvere questo problema ho creato altre tre liste e ho dato unico riferimento di tali elenchi precedenti. Così, ora non recupero del database si verificano.

Il codice per l'applicazione il riferimento è:

public List<UpdateCount> getPieDayUpdateCounts() {

        pieDayUpdateCounts = dayUpdateCounts;
        return pieDayUpdateCounts;
    }

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

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

Ma, qui il problema che si verifica è che solo grafico di cui la scheda è consentono compare ma gli altri rimanenti 2 linguette non vengono visualizzati qualsiasi grafico.

Il codice per l'interfaccia utente è:

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

Quale dovrebbe essere la ragione di questo?

È stato utile?

Soluzione

Piuttosto che cercare di mantenere più copie del tuo elenco, usa JSF Scopes da gestire quando / quanto spesso essi vengono recuperate.

Ambito vostro sostegno chicco alla RequestScoped o ViewScoped, creare un metodo che recupera gli elenchi dal database (se si utilizza CDI, quindi annotare un metodo di @PostConstruct, altrimenti invoke con un PreRenderViewEvent o nel costruttore stesso). Ora accedere alle tue liste tramite semplici getter.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top