gpt4 book ai didi

java - 如何以编程方式更新 JSF 中的图表?

转载 作者:行者123 更新时间:2023-12-01 15:05:12 25 4
gpt4 key购买 nike

我有一个 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" />

我不知道如何告诉图表现在应该更新(并显示新数据)。

最佳答案

当按下按钮时,将调用支持 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 .

关于java - 如何以编程方式更新 JSF 中的图表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13056936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com