Jesse Barnum
Jesse Barnum

Reputation: 6816

How to disable redirects for a specific page in a Wicket application?

I have one page in my application which needs to preserve the original URL without redirecting. The reason is because there is a hashmark which has important information after it, and this is lost during a redirect for Safari on OS X.

I know I can do this to disable all redirect for my entire application:

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

Is there some way to preserve the regular behavior with buffered rendering, but use the one pass rendering for a specific page?

Upvotes: 2

Views: 702

Answers (1)

martin-g
martin-g

Reputation: 17503

Approach 1) requestCycle.scheduleRequestHandlerAfterCurrent(new RenderPageRequestHandler(new PageProvider(page), RedirectPolicy.NEVER)) Use it instead of setResponsePage(Page/Class)


Approach 2) Provide your own IPageRenderer and never redirect for this specific page See Application#setPageRendererProvider. Extend from WebPageRenderer to save you some troubles.

Example code which disables redirect for a NoRedirectTest page:

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();
            }
        };
    }
} );

Upvotes: 2

Related Questions