Here is what I use to keep the cookies (headers):

public class NonResettingRestartException extends ReplaceHandlerException {

    public NonResettingRestartException(final Class<? extends Page<?>>
pageClass, final PageParameters params, final RequestCycle cycle) {
        super(createRequestHandler(pageClass, params), true);

        Response response = cycle.getResponse();
        if (response instanceof IMetaDataBufferingWebResponse) {
            IMetaDataBufferingWebResponse bufferingWebResponse =
(IMetaDataBufferingWebResponse) response;
            bufferingWebResponse.writeMetaData((WebResponse)
cycle.getOriginalResponse());
        }
    }

    private static IRequestHandler createRequestHandler(Class<?
extends Page<?>> pageClass, PageParameters params) {
        return new RenderPageRequestHandler(new
PageProvider(pageClass, params));
    }

}

On Thu, Sep 29, 2011 at 12:01 AM,  <b...@actrix.gen.nz> wrote:
> Hi,
>
> How do I add a cookie to a URL redirect response? I started with the
> following class:
>
> public class RedirectToUrlWithHandlerException extends
> ReplaceHandlerException {
> ...
>
>    public RedirectToUrlWithHandlerException(final String redirectUrl,
> final int statusCode, final IRequestHandler handler) {
>        super(new RedirectRequestHandler(redirectUrl, statusCode){
>            @Override
>            public void detach(IRequestCycle requestCycle) {
>                super.detach(requestCycle);
>                handler.detach(requestCycle);
>            }
>            @Override
>            public void respond(IRequestCycle requestCycle) {
>                super.respond(requestCycle);
>                handler.respond(requestCycle);
>            }
>        }, true);
>    }
> }
>
>
> and in the page:
>
>        throw new RedirectToUrlWithHandlerException(targetUrl, new
> IRequestHandler(){
>            @Override
>            public void respond(IRequestCycle requestCycle) {
>                // Set cookie
>                cookieUtils.save(name, value);
>            }
>
>            @Override
>            public void detach(IRequestCycle requestCycle) { }
>        });
>
> with cookieUtils:
>
>        instance.cookieUtils = new CookieUtils(cookieDefaults){
>            @Override
>            protected void initializeCookie(Cookie cookie) {
>                super.initializeCookie(cookie);
>                cookie.setPath("/");
>            }
>        };
>
>
> Still no cookie in the response.
>
> I know this is a tricky issue where older browsers don't always
> cooperate, but the page being redirected to can't set the cookie
> because the cookie is used to transfer information to it.
>
> Many thanks,
>
> Bernard
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
>
>



-- 
Martin Grigorov
jWeekend
Training, Consulting, Development
http://jWeekend.com

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to