Wicket AjaxIndicatorAppender跨面板

时间:2018-10-09 12:13:15

标签: java ajax wicket

我在一页上有2个面板,在第一个面板中,我调用Ajax链接并进行一些长时间的后端操作。在另一个面板中,我要显示AjaxIndicatorAppender

如果在第一个面板中将AjaxIndicatorAppender与侦听器一起使用,则一切正常,但是如果在面板2中使用它,则它什么也没做。有什么帮助如何在面板1中调用Ajax并在面板2中显示Ajax指示器?我迷路了。

在panel1(菜单面板)中:

modal1.setWindowClosedCallback(new ModalWindow.WindowClosedCallback()
    {
        @Override
        public void onClose(AjaxRequestTarget target)
        {
            some code.....

            send(getPage(), Broadcast.DEPTH, new ContentUpdate(target));


            etc...

在panel2(内容面板)中

@Override
public void onEvent(IEvent<?> event) {
super.onEvent(event);
if (event.getPayload() instanceof ContentUpdate) {
    AjaxRequestTarget target = ((ContentUpdate)event.getPayload()).getTarget();

            ContentSection section = new ContentSection("content0",contentView.getCustomSectionList().get(0));
            listItems.get("content0").replaceWith(section);
            listItems.get("pagingNavigator0").replaceWith(new PagingNavigator("pagingNavigator0", section.getDataView()));
            target.add(wmc);
}
}    

如何在面板2中触发监听器? 谢谢

2 个答案:

答案 0 :(得分:1)

我解决了这个问题。我的父页面也可以触发IAjaxIndicatorAware。我将此界面移到我的父页面,并从第二个面板中调用IndicatorMarkupId。

感谢帮助:)

答案 1 :(得分:0)

AjaxLink应该实现IAjaxIndicatorAware接口,#getAjaxIndicatorMarkupId()应该在Panel2中返回带有加载指示器的HTML元素的标记ID。

但是,通过这种方式,您可以将Panel1与Panel2耦合。由于您使用的是Wicket事件机制,所以我想您尝试使它们保持解耦状态。 可能您需要显示整个页面的加载指示器。