Ah... ok. this is a bug, file a JIRA issue please.

Martijn

On Mon, Dec 14, 2009 at 2:59 PM, Martijn Dashorst
<martijn.dasho...@gmail.com> wrote:
> Use the URL Rewriting features of your container.
>
> Martijn
>
> On Mon, Dec 14, 2009 at 2:52 PM, Engler Adrian <adrian.eng...@ecofin.ch> 
> wrote:
>> Hello,
>>
>> In a Wicket web application (Wicket 1.4.3) I noticed that feedback
>> messages were not displayed when cookies were disabled in the browser.
>> It turned out that this problem had to do with the combination of the
>> URL coding strategy that was used (IndexedHybridUrlCodingStrategy) and
>> the render strategy, RenderStrategy.REDIRECT_TO_BUFFER (which is the
>> default). What actually happens when cookies are switched off is that
>> the page is rendered to a buffer, a redirect is sent, but then the
>> server does not recognize that it should use the contents of the buffer
>> because the URLs do not match, and therefore the page is rendered again
>> (this time without the feedback messages because they are now already
>> marked as rendered), the buffer is not used.
>>
>> If the render strategy is changed to RenderStrategy.REDIRECT_TO_RENDER,
>> there is no problem without cookies; the problem only exists when the
>> page is first rendered to a buffer and then this buffer is not used.
>>
>> The attached minimal application demonstrates this behavior: When
>> cookies are enabled, you can click the button "Show feedback message" on
>> the page, and a message "Info message generated <time>" is shown. If
>> cookies are disabled, no feedback message is shown.
>>
>> Example from debugging:
>> In WebRequestCycle.redirectTo(...), the variable redirectURL is assigned
>> the value home.0;jsessionid=1ie4koskoj2bn; addBufferedResponse is then
>> called with the value home.0;jsessionid=1ie4koskoj2bn for buffered.
>> Then, after the redirect, in WicketFilter.doGet(...),
>> WebApplication.popBufferedResponse is called with the value home.0 for
>> the relativePath parameter. In that method, the buffered response is not
>> found (because the real key is home.0;jsessionid=1ie4koskoj2bn).
>>
>> The problem is that when the buffer is put to the map, a key that
>> includes the session ID is used, while for retrieval of the buffered
>> page, a key without the session ID is used.
>>
>> This problem occurs when IndexedHybridUrlCodingStrategy or the super
>> class HybridUrlCodingStrategy is used.
>>
>> If the page is not mounted (and not bookmarkable after the form has been
>> submitted), there are no problems without cookies because a key without
>> the jsessionid is used for storing the buffered response in a map. This
>> has to do with the fact that in WebRequestCycle.redirectTo(...) only the
>> part of the URL after the "?" is used as a key:
>>
>> int index = stripped.indexOf("?");
>> [...]
>> ((WebApplication) application).addBufferedResponse(sessionId,
>> stripped.substring(index + 1), servletResponse);
>>
>> If the page is mounted with a HybridUrlCodingStrategy, the value
>> assigned to the variable stripped is a string without a "?", therefore,
>> index has the value -1 and a URL with jsessionid is used as a key for
>> the buffered page.
>>
>> I think it might be good if someone has a look into this; it might also
>> be hat in some settings a response is rendered twice (first into the
>> buffer then for the client because the buffer is not retrieved because
>> of a URL mismatch) without users noticing anything (as long as feedback
>> messages are not used).
>>
>> Thank you!
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>> For additional commands, e-mail: users-h...@wicket.apache.org
>>
>
>
>
> --
> Become a Wicket expert, learn from the best: http://wicketinaction.com
> Apache Wicket 1.4 increases type safety for web applications
> Get it now: http://www.apache.org/dyn/closer.cgi/wicket/1.4.0
>



-- 
Become a Wicket expert, learn from the best: http://wicketinaction.com
Apache Wicket 1.4 increases type safety for web applications
Get it now: http://www.apache.org/dyn/closer.cgi/wicket/1.4.0

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

Reply via email to