2

我的应用程序中有一个页面需要保留原始 URL 而无需重定向。原因是因为后面有一个包含重要信息的井号,而这在 OS X 上的 Safari 重定向期间丢失了。

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

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

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

4

1 回答 1

2

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


方法 2)提供您自己的IPageRenderer并且永远不会重定向此特定页面,请参阅Application#setPageRendererProvider。扩展 fromWebPageRenderer为您省去一些麻烦。

禁用页面重定向的示例代码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();
            }
        };
    }
} );
于 2015-01-07T20:14:53.267 回答