我前几天遇到过以下问题: 我有一个带有2个面板的Page.class。例如,Panel 1点击了Datatable。
@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异常发生在&#34; target.add(this)&#34;来自codeblock 2
当然它是null ..没有请求。
问题是如何触发第二个代码块? 未给出对面板1的访问,因为我仅测试面板2。这意味着,我无法点击dataTable中的一行,让面板1触发事件。
编辑:我正在使用wicket 6.18答案 0 :(得分:0)
我想它存在另一个答案,但在这种情况下它对我有所帮助:
我创建了一个AjaxRequestTarget模拟并发送事件。我验证这个方法被调用。 ajaxMockTarget.add(组分)