当前位置: 首页 > 知识库问答 >
问题:

Wicket:AjaxRequestTarget vs onModelChanged

习斌
2023-03-14
public MyComponent extends Panel {

    public MyComponent(String id, Component... componentsToRefresh) {

        add(new AjaxLink<Void>("someId") {
            @Override
            public void onClick(AjaxRequestTarget target) {
                // some logic with model change

                for(Component c: componentsToRefresh) {
                    c.modelChanged();
                }

                target.add(componentsToRefresh);
            }
        };
    }
}

共有1个答案

蒋啸
2023-03-14

我会建议改用三柱门事件系统。也就是说,无论何时单击AjaxLink,您都将广播一个事件:

send(getPage(), Broadcast.BREATH, new MyEventPayload(target));

这将把事件广播到当前页及其所有组件。

然后,在您的任何组件中,您都可以监听事件:

@Override
public void onEvent(IEvent event) {
  Object payload = event.getPayload();
  if (payload instanceof MyEventPayload) {
    ((MyEventPayload) payload).getTarget().add(this); // or any of my sub-components
    event.stop(); // optionally you can stop the broadcasting
  }
}
 类似资料:

相关问答

相关文章

相关阅读