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