gpt4 book ai didi

java - Wicket:表单的 onSubmit() 内的 addOrReplace()

转载 作者:行者123 更新时间:2023-11-30 02:54:56 24 4
gpt4 key购买 nike

我在页面内有一个 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 的调用不起作用。我没有看到添加到页面的文本。仅当我刷新时它才会显示。

如何在 onSubmit() 回调内部调用 addOrReplace

最佳答案

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

ajaxRequestTarget.add(frm);

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

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

要获取 AjaxRequestTarget,您可以重写 AjaxButton#onSubmit(AjaxRequestTarget, Form) 并从那里调用 doSomething - 将 AjaxRequestTarget 传递给任何需要更新某些内容的方法。

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

关于java - Wicket:表单的 onSubmit() 内的 addOrReplace(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37529123/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com