[
https://issues.apache.org/jira/browse/WICKET-3576?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13012691#comment-13012691
]
Bertrand Guay-Paquet commented on WICKET-3576:
----------------------------------------------
Some debugging reveals that the BufferedWebResponse is reset which has the
effect of discarding previously added AddCookieActions.
This happens at :
WebPageRenderer.redirectTo(Url, RequestCycle) line: 176
(partial) stack trace:
BufferedWebResponse.sendRedirect(String) line: 460
HeaderBufferingWebResponse.sendRedirect(String) line: 111
WebPageRenderer.redirectTo(Url, RequestCycle) line: 177
WebPageRenderer.respond(RequestCycle) line: 254
RenderPageRequestHandler.respond(IRequestCycle) line: 139
RequestCycle$HandlerExecutor.respond(IRequestHandler) line: 715
RequestCycle$HandlerExecutor(RequestHandlerStack).execute(IRequestHandler)
line: 63
RequestCycle$HandlerExecutor(RequestHandlerStack).execute(IRequestHandler)
line: 96
CustomRequestCycle(RequestCycle).processRequest() line: 212
CustomRequestCycle(RequestCycle).processRequestAndDetach() line: 253
WicketFilter.processRequest(ServletRequest, ServletResponse, FilterChain) line:
138
Execution passes by
WebPageRenderer.respond(RequestCycle) line: 254
which has the following:
else if (!targetUrl.equals(currentUrl) //
&&
(getPageProvider().isNewPageInstance() || (isSessionTemporary() &&
getPage().isPageStateless())))
{
// if target URL is different and session is temporary and page is
stateless
// this is special case when page is stateless but there is no session
so we can't
// render it to buffer
// alternatively if URLs are different and we have a page class and not
an instance we
// can redirect to the url which will instantiate the instance of us
// note: if we had session here we would render the page to buffer and
then redirect to
// URL generated *after* page has been rendered (the statelessness may
change during
// render). this would save one redirect because now we have to render
to URL generated
// *before* page is rendered, render the page, get URL after render and
if the URL is
// different (meaning page is not stateless), save the buffer and
redirect again (which
// is pretty much what the next step does)
redirectTo(targetUrl, requestCycle);
}
WICKET-3161 had a similar problem.
> Cannot set a cookie on bookmarkable page
> ----------------------------------------
>
> Key: WICKET-3576
> URL: https://issues.apache.org/jira/browse/WICKET-3576
> Project: Wicket
> Issue Type: Bug
> Components: wicket-core, wicket-examples
> Affects Versions: 1.5-RC2, 1.5-RC3
> Environment: wicket-examples from rev 1086031 (March 29 2011)
> Reporter: Bertrand Guay-Paquet
> Priority: Critical
> Labels: cookie
>
> Steps to reproduce:
> //////////////////////
> After starting the Wicket Examples, navigate directly to:
> http://localhost:8080/authentication2/wicket/bookmarkable/org.apache.wicket.examples.authentication2.SignIn2
> Sign in with proper user name and password. Notice that the cookie "LoggedIn"
> is not set.
> //////////////////////
> This does not happen if navigation to the authentication2 example is done
> through the examples home page. In that case, the URL is
> http://localhost:8080/authentication2/.
> If I understand correctly, this means that bookmarkable pages cannot set
> cookies when they also do a redirect. e.g. a bookmarkable sign-in page.
> Note that with the examples from 1.5-rc2, doing the steps described above
> produces a different result. In that case, signing-in does not set a cookie
> of actually sign-in at all. The same sign-in page is presented a second time.
> Sign-in works on this second page.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira