Wicket setResponsePage 多次调用构造函数

问题描述 投票:0回答:1

尝试将模型从一个页面传递到另一页面。 应用程序初始化

getRequestCycleSettings().setRenderStrategy(RequestCycleSettings.RenderStrategy.ONE_PASS_RENDER)

我有两个页面,每个页面都定义了 3 个构造函数。 PageOne 有一个表单。 OnSubmit 应该将页面模型从 PageOne 传递到 PageTwo。

对 setResponsePage 的调用首先调用构造函数 WebPage(IModel 模型)并按预期传递模型。

但紧接着,它还调用 WebPage() (noargs) WebPage(PageParameters 参数)构造函数。 结果,PageTwo 被构造了 3 次,最终得到一个 null DefaultModel。

如何在调用 WebPage(IModel 模型)构造函数后告诉 Wicket 停止?

这是代码:

public class PageOne extends WebPage {
    // Similar constructors for PageTwo
    public PageOne() {
        super();
    }

    public PageOne(PageParameters p) {
        super(p);
    }

    public PageOne(IModel<?> model) {
        super(model);
    }

   @Override
   protected void onInitialize() {
       super.onInitialize();

       Form<Void> form = new Form<Void>("form") {
           @Override
           public void onSubmit() {
               setResponsePage(new PageTwo((IModel<?>)getDefaultModel()));
           }
      };
   }
}

谢谢你

Wicket 版本是 9.13.0

应用程序是一个 Springboot 应用程序(springboot 版本 2.7.11),以防万一。

我希望 setresponsePage 仅调用正确的构造函数一次并传递模型。

java wicket
1个回答
0
投票
I expect setresponsePage to call the right constructor only once and pass the model.

我也是!但我需要调试它才能看看为什么会发生这种情况。

您可以尝试:

@Override
public void onSubmit() {
    throw new RestartResponseException(new PageTwo((IModel<?>)getDefaultModel()));
}
© www.soinside.com 2019 - 2024. All rights reserved.