我在一页上有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中触发监听器? 谢谢
答案 0 :(得分:1)
我解决了这个问题。我的父页面也可以触发IAjaxIndicatorAware。我将此界面移到我的父页面,并从第二个面板中调用IndicatorMarkupId。
感谢帮助:)
答案 1 :(得分:0)
AjaxLink
应该实现IAjaxIndicatorAware
接口,#getAjaxIndicatorMarkupId()
应该在Panel2中返回带有加载指示器的HTML元素的标记ID。
但是,通过这种方式,您可以将Panel1与Panel2耦合。由于您使用的是Wicket事件机制,所以我想您尝试使它们保持解耦状态。 可能您需要显示整个页面的加载指示器。