如何禁用 Wicket 应用程序中特定页面的重定向?
How to disable redirects for a specific page in a Wicket application?
我的应用程序中有一页需要保留原始 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
。从 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();
}
};
}
} );
我的应用程序中有一页需要保留原始 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
。从 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();
}
};
}
} );