http://ajaxian.com/archives/show-love-to-the-object-literal
just 0.02cent
On 4/16/06, Matej Knopp <[EMAIL PROTECTED]> wrote:
One more thing. I believe the getCookie, deleteCookie, etc. should be
properly "namespaced", e.g. wicketGetCookie, wicketDeleteCookie, etc. so
they wouldn't interfere with possibly existing functions.
-Matej
Matej Knopp wrote:
> Hi,
>
> It seems to work :)
>
> I've just made some minor tweaks (code below). One more thing.
> StringResponse still doesn't encode URLs correctly. String response is
> the one responsible for rendering head. So in current state, opening
> link in new tab without cookies leads to session expiration :(
>
> Now the code. I change it to render the cookies _javascript_ even if
> there's no page in page map. This is safe and leads to better behavior.
>
> -Matej
>
> public final void renderHead(final Response response)
> {
> final WebRequestCycle cycle =
> (WebRequestCycle)getRequestCycle();
> final IRequestTarget target = cycle.getRequestTarget();
>
> int initialAccessStackSize = 0;
> if
> (getApplication().getRequestCycleSettings().getRenderStrategy() ==
> IRequestCycleSettings.REDIRECT_TO_RENDER
> && target instanceof RedirectPageRequestTarget)
> {
> initialAccessStackSize = 1;
> }
>
> // Here is our trickery to detect whether the current
> request was
> // made in a new window/ tab, in which case it should go in a
> // different page map so that we don't intermangle the
> history of
> // those windows
> final ArrayListStack accessStack =
> getPageMap().getAccessStack();
>
>
> //---------------------------------------------------------------------------
>
> // it's no longer necessary to have this check here. Cookies
> related
> // _javascript_ can be rendered even when there's no page in
> pagemap
> if (true || accessStack.size() > initialAccessStackSize)
> {
> CharSequence url = "">> if (target instanceof IBookmarkablePageRequestTarget)
> {
> IBookmarkablePageRequestTarget current =
> (IBookmarkablePageRequestTarget)target;
> BookmarkablePageRequestTarget redirect = new
> BookmarkablePageRequestTarget(
> getSession().createAutoPageMapName(),
> current.getPageClass(), current
> .getPageParameters());
> url = "" (redirect);
> }
> else
> {
> url = "">> }
> final BodyContainer body = getBodyContainer();
> final Cookie[] cookies =
> cycle.getWebRequest().getCookies();
>
> //---------------------------------
> // put the check here.
> if (( accessStack.size() > initialAccessStackSize &&
> cookies == null) || body == null)
> {
> // If the browser does not support cookies, we try
> to work
> // with the history
>
> ...
>
> Johan Compagner wrote:
>> Hi
>>
>> Can somebody look if it works for him on their browser?
>>
>> I changed the new window detection for a pagemap by setting in
>> _javascript_ cookies (with the pagemap name as cookie name)
>>
>> now on a page load we set a cookie and on a body.onUnLoad we delete
>> the cookie again.
>>
>> So when the page is still there and another page is loaded in a new
>> window or tab. He first looks for the cookie
>> and it will see that it is there and then does redirect to another
>> pagemap.
>>
>> It will only do this if a cookie can be set (if the current request
>> has cookies) else it will do the previous check.
>>
>> The correct working of this behaviour more or less depends on one
>> thing. That body.onUnLoad does get executed.
>> (and cookies must be able to set in _javascript_)
>>
>> johan
>>
>
>
>
> -------------------------------------------------------
> This SF.Net email is sponsored by xPML, a groundbreaking scripting language
> that extends applications into web and mobile media. Attend the live
> webcast
> and join the prime developer group breaking into this new coding territory!
> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
> _______________________________________________
> Wicket-develop mailing list
> Wicket-develop@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wicket-develop
>
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
Wicket-develop mailing list
Wicket-develop@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-develop
--
Ingram Chen
Java [EMAIL PROTECTED]
Institue of BioMedical Sciences Academia Sinica Taiwan
blog: http://www.javaworld.com.tw/roller/page/ingramchen