gpt4 book ai didi

java - Wicket:ShieldUI 图表在更新时消失

转载 作者:行者123 更新时间:2023-11-30 06:33:47 25 4
gpt4 key购买 nike

我目前在使用 Wicket/ShieldUI 组合时遇到了有关图表的问题。

在页面初始化时,图表显示良好(即第一次渲染时)。这些图表将作为 ListView 的一部分呈现。

我需要能够更新这些图表中的数据并重新绘制。到目前为止,我已经用两种方法解决了这个问题,但没有成功解决我的问题。

问题是,当通过 Ajax 调用重新渲染图表时,它就会消失,实际上不会被页面加载时通过 Shield UI js 发生的巫术处理。

在我的应用程序中,图表是由配置定义的。这些配置是 ListView 的驱动程序。配置包含对数据收集和图表的引用,在创建时使用它。

下面是我的 onInitialize 中创建的简单代码示例。

final WebMarkupContainer visualizationContainer = new WebMarkupContainer(WICKET_ID_VIZ_CONTAINER);
chartConfigListView = new ListView<ChartConfig>(WICKET_ID_CHART_CONTAINER_LIST_VIEW, chartConfigList) {
@Override
protected void populateItem(ListItem<ChartConfig> item)
{
final ChartPanel chartPanel = new ChartPanel(WICKET_ID_CHART_THE_CHART, config);
chartPanel.setOutputMarkupId(true);
item.addOrReplace(chartPanel);
}
};
visualizationContainer.add(chartConfigListView);

ChartPanel 的内部(onInitialize)实例化一个新的 ShieldUI 图表并将其添加到 ChartPanel 组件(ChartPanel 扩展了 Panel)。

因此,第一次 ListView 填充并创建图表时,一切都很好。随后,每当 ListView 填充并使用更新的数据集创建新的图表实例时,图表都会消失,而 html 元素会呈现为完全空的 div。

有人知道如何使我的图表不被遗忘吗?

最佳答案

虽然我还没有成功地使用 ListView 方法来完成这项工作(因为我有点懒),但我已经找到了解决方案。

收到 Ajax 请求后,可以调用:

wicketChart.reInitialize(ajaxRequestTarget); 

图表将使用它现在包含的数据重新绘制。

reInitialize 方法是 WidgetComponentBase 类的一部分,因此我希望这可能是用于其他 Wicket 组件的解决方案。

关于java - Wicket:ShieldUI 图表在更新时消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45584586/

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