2

在某些情况下,我必须将一个 Wicket 页面的请求传递给服务器端的另一个 Wicket 页面,即在浏览器地址栏中转发维护 URL,但将页面参数传递给第二个页面。

在 Wicket 1.5 之前,我可以做

public MyPage(PageParameters params) {
    // some logic here to decide whether and where to forward
    setRedirect(false);
    setResponsePage(MyOtherPage.class, params);
}

由于setRedirect(boolean)不再存在,有没有办法在以后的 Wicket 版本中实现服务器端转发?

4

3 回答 3

2

一位同事刚刚在这里找到了解决方案:http: //mail-archives.apache.org/mod_mbox/wicket-users/201203.mbox/%3CCAMomwMr2fkO38E3d9RTk5TEmuf0Vx66F46F8eYs84Bb3bVtPgA@mail.gmail.com%3E

现在它是:

RequestCycle.get().scheduleRequestHandlerAfterCurrent(new RenderPageRequestHandler(new PageProvider(MyOtherPage.class, params), RenderPageRequestHandler.RedirectPolicy.NEVER_REDIRECT));

一段可怕的代码......看起来一点也不优雅,但有效。

于 2012-10-18T15:24:14.807 回答
2

在 Wicket 6 上,您可以以更简单的方式重定向到另一个页面,RestartResponseAtInterceptPageException在页面代码中的任何位置抛出:

throw new RestartResponseAtInterceptPageException(WicketPage.class)

它对我来说很好......

于 2014-05-30T17:47:29.940 回答
1

您应该能够简单地执行以下操作:

throw new RestartResponseException(MyOtherPage.class, params);
于 2015-07-06T21:01:46.880 回答