0

私はJSFアプリケーションを持っています。

  • ユーザーがボタンを押すと、その後
  • 新しいデータ項目がグラフに追加され、
  • チャートを再描画する必要があります。

チャートを塗り直す正しい方法は何ですか?

現在、管理対象Beanには、ボタン押下イベントを処理する次のコードがあります。

public void simulateYearButtonAction() 
{
    // Update other UI elements here

    this.updateChart();
}

private void updateBirthsChart() {
    final FacesContext context = FacesContext.getCurrentInstance();
    final ChartBean bean =
            (ChartBean) context.getApplication().evaluateExpressionGet(
                    context, "#{chartBean}", ChartBean.class);
    final DataStore dataStore = (DataStore)this.simulationFacade;
    bean.addBirthsData(this.year-1, dataStore.getValue(DataStoreValueType.BIRTHS_LAST_YEAR));
}

チャートシリーズにChartBean新しいデータ項目を追加します

public ChartBean() {  
    createCategoryModel();  
}  
private void createCategoryModel() {  
    categoryModel = new CartesianChartModel();  

    birthsSeries = new ChartSeries();
    birthsSeries.setLabel("Рождения");

    birthsSeries.set(2012, 0);
    categoryModel.addSeries(birthsSeries);
}  

public void addBirthsData(final int aYear, final double aNumberOfBirths) {
    this.birthsSeries.set(aYear, aNumberOfBirths);
}

ページは次のChartBeanように使用します。

<p:lineChart id="category" value="#{chartBean.categoryModel}"
    legendPosition="e" title="Демографическая динамика" minX="2012" maxX="2112"
    style="height:300px;margin-top:20px" />

チャートを今すぐ更新する(そして新しいデータを表示する)必要があることをチャートに伝える方法がわかりません。

4

1 に答える 1

1

ボタンが押されると、バッキングBeanメソッドが呼び出され、チャートが再構築されます。update="category"チャートを含めることでアクションが終了すると、次のように更新されます。

<p:commandButton actionListener=#{chartBean.refreshCategoryModel()}
                 update="category"/>

バッキングBeanにいる間:

public void refreshCategoryModel() {
    createCategoryModel();
}

private void createCategoryModel() {  
    categoryModel = new CartesianChartModel();  

    birthsSeries = new ChartSeries();
    birthsSeries.setLabel("Рождения");

    birthsSeries.set(2012, 0);
    categoryModel.addSeries(birthsSeries);
}  

新しく生成されたチャートは、おそらくいくつかの動的な値に依存します。processを呼び出すときは、これらのコンポーネントを忘れないでください<p:commandButton/>

次の投稿https://stackoverflow.com/a/12929296/407466が役立つ場合があります。

于 2012-10-24T20:52:01.897 に答える