Wicket:在Form的onSubmit()中添加了AddOrReplace()

时间:2016-05-30 15:20:26

标签: java wicket wicket-6

我在页面中有一个wicket 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的调用不起作用。我没有看到文本添加到页面中。它只会在我刷新时出现。

如何在addOrReplace回调中拨打onSubmit()电话?

1 个答案:

答案 0 :(得分:2)

听起来你正在使用AjaxButtons。您必须更新组件或其任何父组件才能在浏览器中显示更改:

ajaxRequestTarget.add(frm);

请记住在要通过Ajax更新的组件上调用#setOutputMarkupId(true):

frm.setOutputMarkupId(true);
addOrReplace(frm);

要掌握AjaxRequestTarget,您可以覆盖AjaxButton#onSubmit(AjaxRequestTarget, Form)并从那里调用doSomething - 将AjaxRequestTarget传递给任何必须更新内容的方法。

或者你可以随时调用#getRequestCycle()。find(AjaxRequestTarget.class)来获取当前的AjaxRequestTarget。