私は JSF 2.0 と Primefaces UI コンポーネントを使用しているプロジェクトを行っています。
タブ、「日」、「週」、「月」を含むタブ ビュー コンポーネントがあります。すべてのタブで、それぞれに棒グラフを表示する必要があります。同じように、次の 3 つのメソッドを使用して 3 つのリストを取得しています。次のコードでは、UpdateCountHelper がデータベースからデータを取得しています。そのため、UpdateCountHelper はデータの取得に時間がかかっています。
これはリストを取得するためのコードです:
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;
}
これは、棒グラフの UI のコードです。
<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>
今、私は上記と同じタブを持つ他のタブビューに同じデータを表示する必要があります.Pie Chartに表示する必要があるのは今だけです. 円グラフでは、同じリストを使用しています。そのため、データベースからデータを再度取得し、時間を浪費します。その問題を解決するために、私は他の 3 つのリストを作成し、それらの以前のリストの参照のみを示しました。そのため、データベースのフェッチは発生しません。
参照を適用するためのコードは次のとおりです。
public List<UpdateCount> getPieDayUpdateCounts() {
pieDayUpdateCounts = dayUpdateCounts;
return pieDayUpdateCounts;
}
public List<UpdateCount> getPieMonthUpdateCounts() {
pieMonthUpdateCounts = monthUpdateCounts;
return pieMonthUpdateCounts;
}
public List<UpdateCount> getPieWeekUpdateCounts() {
pieWeekUpdateCounts = weekUpdateCounts;
return pieWeekUpdateCounts;
}
しかし、ここで発生する問題は、タブが有効になっているチャートのみが表示され、残りの 2 つのタブにはチャートが表示されないことです。
UI のコードは次のとおりです。
<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>
この背後にある理由は何ですか?