0

几天前我遇到了以下问题:我有一个带有 2 个面板的 Page.class。例如,面板 1 可以单击数据表。

@Override
protected void onRowClick(final AjaxRequestTarget target, final Item<Template> item) {
    this.send(this.getPage(), Broadcast.BREADTH, new CustomAjaxEvent(target));

}

自定义 Ajax 事件持有 RequestTarget,稍后将用于在另一个面板中识别触发的事件。

现在在我的第二个面板中,我有以下方法:

@Override
public void onEvent(IEvent<?> event) {
    Object payload = event.getPayload();

    if(payload instanceof CustomAjaxEvent){
        ((CustomAjaxEvent)payload).target.add(this)
    }
    super.onEvent(event);
}

现在我要测试这些东西..(以下代码在 testClass 中)

panel.send(panel.getPage(),
     Broadcast.BREADTH,
     new CustomAjaxEvent(RequestCycle.get().find(AjaxRequestTarget.class)));

Nullpointer 异常发生在代码块 2 中的“target.add(this)”上

当然它是空的..没有请求。

问题是如何触发第二个代码块?没有给出对面板 1 的访问权限,因为我只测试面板 2。这意味着,我无法单击 dataTable 中的一行并让面板 1 触发事件。

编辑:我正在使用 wicket 6.18

4

1 回答 1

0

我想它存在另一个答案,但在这种情况下它对我有足够的帮助:

我创建了一个 AjaxRequestTarget 模拟并发送事件。我验证此方法是否被调用。ajaxMockTarget.add(组件)

于 2015-11-11T20:49:53.053 回答