我的应用程序中有一个页面需要保留原始 URL 而无需重定向。原因是因为后面有一个包含重要信息的井号,而这在 OS X 上的 Safari 重定向期间丢失了。
我知道我可以这样做来禁用整个应用程序的所有重定向:
getRequestCycleSettings().setRenderStrategy( IRequestCycleSettings.RenderStrategy.ONE_PASS_RENDER );
是否有某种方法可以通过缓冲渲染保留常规行为,但对特定页面使用一次性渲染?
方法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();
}
};
}
} );