如何禁用Wicket应用程序中特定页面的重定向?

时间:2015-01-07 18:31:28

标签: wicket wicket-6

我的应用程序中有一个页面需要保留原始URL而不重定向。原因是因为有一个哈希标记后面有重要信息,这在OS X上重定向Safari时会丢失。

我知道我可以这样做来禁用我整个应用程序的所有重定向:

getRequestCycleSettings().setRenderStrategy( IRequestCycleSettings.RenderStrategy.ONE_PASS_RENDER );

是否有某种方法可以使用缓冲渲染保留常规行为,但是对特定页面使用一次渲染?

1 个答案:

答案 0 :(得分:2)

方法1) requestCycle.scheduleRequestHandlerAfterCurrent(new RenderPageRequestHandler(new PageProvider(page), RedirectPolicy.NEVER)) 使用它而不是setResponsePage(Page/Class)


方法2)提供您自己的IPageRenderer并且永远不会重定向此特定页面 见Application#setPageRendererProvider。从WebPageRenderer延伸以省去一些麻烦。

禁用NoRedirectTest页面重定向的示例代码:

setPageRendererProvider( new IPageRendererProvider() {
    public IPageRenderer get( final RenderPageRequestHandler context ) {
        return new WebPageRenderer( context ) {
            @Override
            protected boolean isOnePassRender() {
                IRequestablePage whichPage = getRenderPageRequestHandler().getPage();
                return whichPage instanceof NoRedirectTest || super.isOnePassRender();
            }
        };
    }
} );