我已经编写了自己的对话框,并且在我的索引页面上有一个AjaxLink 何时单击AjaxLink。我将表现出打开我的对话框实例。 这是我的代码
add(new AjaxLink("open.working.date.dialog") {
@Override
public void onClick(AjaxRequestTarget target) {
WorkingDateDialog dialog = new WorkingDateDialog("working.date.dialog", getString("index.working.date.dialog.title"), true);
Index.this.add(dialog);
dialog.open(target);
}
});
当然,在我的网页上,html标记我没有引用组件ID working.date.dialog,它会抛出异常。 但当我用 this.add(对话框); 或 target.add(对话框)替换 Index.this.add(对话框); 时; 对话框无法奏效。 还有其他方法可以向页面添加动态对话框吗? 在jquery中,我只需将对话框html附加到body然后通过jquery打开它就可以轻松完成。 谢谢你们的帮助!
答案 0 :(得分:1)
一个选项是在页面的构造函数中添加对话框并最初隐藏它。然后在单击链接时将其标记为可见并将其添加到AjaxRequestTarget。
另一种选择是添加具有相同组件ID的虚拟/空WebMarkupContainer,然后将其替换为#onClick()中的对话框。
答案 1 :(得分:0)
你违背了wicket在这里做事的方式,这会给你带来很大的痛苦。 :-)首先,WorkingDateDialog需要扩展ModalWindow。假设确实如此,这是我的建议。
在你的ajax链接上方添加以下代码:
final WorkingDateDialog dialog = new WorkingDateDialog("working.date.dialog", getString("index.working.date.dialog.title"), true);
add(dialog);
然后你的ajax链接变为:
add(new AjaxLink("open.working.date.dialog") {
@Override
public void onClick(AjaxRequestTarget target) {
dialog.show(target);
}
});
因此,您始终将ModalWindow实例添加到页面层次结构中。它'只有在有人点击链接时才会看到。
我希望这会对你有所帮助。如果您有任何问题,请与我们联系。