Wicket:在 Form 的 onSubmit() 中添加 addOrReplace()
Wicket: addOrReplace() inside Form's onSubmit()
我在页面中有一个检票口 Form
,声明如下:
protected void onBeforeRender() {
Form<Void> frm = new Form<Void>("frm") {
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit() {
super.onSubmit();
doSomething();
}
};
//other stuff...
addOrReplace(frm);
}
doSomething
是页面本身的一个方法。在那个方法里面我做了:
private void doSomething(){
//stuff...
addOrReplace(new Label("labelID", "Some text"));
}
问题是对 addOrReplace
的调用不起作用。我没有看到添加到页面的文本。它只在我刷新时显示。
如何在 onSubmit()
回调中调用 addOrReplace
?
听起来您正在使用 Ajax 按钮。您必须更新组件或其任何父组件才能使更改在浏览器中可见:
ajaxRequestTarget.add(frm);
记得在要更新的组件上调用#setOutputMarkupId(true) Ajax:
frm.setOutputMarkupId(true);
addOrReplace(frm);
要获取 AjaxRequestTarget,您可以覆盖 AjaxButton#onSubmit(AjaxRequestTarget, Form)
并从那里调用 doSomething - 将 AjaxRequestTarget 传递给任何必须更新某些内容的方法。
或者,您可以随时调用#getRequestCycle().find(AjaxRequestTarget.class) 来获取当前的 AjaxRequestTarget。
我在页面中有一个检票口 Form
,声明如下:
protected void onBeforeRender() {
Form<Void> frm = new Form<Void>("frm") {
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit() {
super.onSubmit();
doSomething();
}
};
//other stuff...
addOrReplace(frm);
}
doSomething
是页面本身的一个方法。在那个方法里面我做了:
private void doSomething(){
//stuff...
addOrReplace(new Label("labelID", "Some text"));
}
问题是对 addOrReplace
的调用不起作用。我没有看到添加到页面的文本。它只在我刷新时显示。
如何在 onSubmit()
回调中调用 addOrReplace
?
听起来您正在使用 Ajax 按钮。您必须更新组件或其任何父组件才能使更改在浏览器中可见:
ajaxRequestTarget.add(frm);
记得在要更新的组件上调用#setOutputMarkupId(true) Ajax:
frm.setOutputMarkupId(true);
addOrReplace(frm);
要获取 AjaxRequestTarget,您可以覆盖 AjaxButton#onSubmit(AjaxRequestTarget, Form)
并从那里调用 doSomething - 将 AjaxRequestTarget 传递给任何必须更新某些内容的方法。
或者,您可以随时调用#getRequestCycle().find(AjaxRequestTarget.class) 来获取当前的 AjaxRequestTarget。