如何禁用 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();
            }
        };
    }
} );