ok, i did the same magic in my coding strategy and it works. in new tabs the 
url now looks like
http://localhost/page/SomePage?wicket:bookmarkablePage=wicket-0:com.package.SomePage

can someone explain the mechanism to me? also, why should i take care of this 
and not WebRequestCodingStrategy?

thanx,
ittay

Ittay Dror wrote:
> well, this is the code in WebRequestCodingStrategy:
> public final CharSequence encode(final RequestCycle requestCycle,
>                       final IRequestTarget requestTarget)
>       {
>               // first check whether the target was mounted
>               CharSequence path = pathForTarget(requestTarget);
>               if (path != null)
>               {
>                       CharSequence prefix = urlPrefix(requestCycle);
>                       final AppendingStringBuffer buffer = new 
> AppendingStringBuffer(prefix.length()
>                                       + path.length());
>                       buffer.append(prefix);
>                       buffer.append(path);
>                       return 
> requestCycle.getOriginalResponse().encodeURL(buffer);
>               }
>               ....
> 
> the page (target) is indeed mounted, so pathForTarget goes to the encoding 
> strategy to encode the path. in case the target was not mounted, it would 
> have encoded the url itself (in my case, the target is 
> IBookmarkablePageRequestTarget)
> 
> the code there is less than trivial, should i copy & paste? can i reference 
> it somehow?
> 
> 
> ittay
> 
> 
> Matej Knopp wrote:
>> Hmm.. The problem with this kind of bugs is that it's very difficult to 
>> reproduce.
>>
>> IMHO The problem is in this line:
>> else {document.location.href = 
>> '/page/SomePage;jsessionid=E43E09C7B61190F3C8C5E98CB988F21F?';}
>>
>> The url should contain pagemap name (something like wicket-1).
>>
>> In wicket-1.2 the url is built in PageMapChecker#renderHead 
>> (WebPage.java line 388 -
>> IBookmarkablePageRequestTarget current = 
>> (IBookmarkablePageRequestTarget)target;
>> BookmarkablePageRequestTarget redirect = new 
>> BookmarkablePageRequestTarget(               
>> getSession().createAutoPageMapName(), 
>> current.getPageClass(), current.getPageParameters());
>> url = cycle.urlFor(redirect);
>> )
>>
>> I wonder why the generated url doesn't contain the pageMap name.
>>
>> -Matej
>>
>> Ittay Dror wrote:
>>> further investigation shows that for IE and openning new windows, it works 
>>> fine - a PageMap instance is created, and the page loads fine.
>>>
>>> i've also started firefox with a new profile (no extensions), to make sure 
>>> it's not extension related, and no, it happens there also, and also when i 
>>> open a new window instead of new tab. it seems to be related to differences 
>>> in cookie (session) handling between firefox and IE. 
>>>
>>> ittay
>>>
>>> Ittay Dror wrote:
>>>> Hi,
>>>>
>>>> I'm using firefox. when i duplicate a tab, the tab reloads in an infinite 
>>>> loop.
>>>>
>>>> this is the reason:
>>>> <script type="text/javascript"><!--//--><![CDATA[//><!--
>>>> var pagemapcookie = getWicketCookie('pm-nullwicket');
>>>> if(!pagemapcookie && pagemapcookie != 
>>>> '1'){setWicketCookie('pm-nullwicket',1);}
>>>> else {document.location.href = 
>>>> '/page/SomePage;jsessionid=E43E09C7B61190F3C8C5E98CB988F21F?';}
>>>>
>>>> //--><!]]></script>
>>>>
>>>> </head>
>>>> <body onunload="deleteWicketCookie('pm-nullwicket');">
>>>>
>>>>  
>>>> what happens is that the pagemapcookie is there when the page is rendered, 
>>>> because the previous page was not unloaded, so the document's href is 
>>>> changed to itself. of course, when the page loads, the cookie is still 1, 
>>>> so the loop continues. the same will happen if i just open a new tab and 
>>>> load the same url.
>>>>
>>>> what gives?
>>>>
>>>>
>>>> also, the code that writes this script is WebPage.PageMapChecker the 
>>>> comment in the code is:
>>>> /**
>>>>     * Tries to determine whether this page was opened in a new window or 
>>>> tab.
>>>>     * If it is (and this checker were able to recognize that), a new page 
>>>> map
>>>>     * is created for this page instance, so that it will start using it's 
>>>> own
>>>>     * history in sync with the browser window or tab.
>>>>     */
>>>>
>>>> i've tried to debug this, but it doesn't look like a new PageMap is 
>>>> created (i don't use it, so the PageMap instance is the default one). so 
>>>> it seems i *don't* get a history per tab. 
>>>>
>>>> can/should i remove the AutomaticMultiWindowSupport setting? 
>>>>
>>>> thanx,
>>>> ittay
>>
>>
>> _______________________________________________
>> Wicket-user mailing list
>> Wicket-user@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/wicket-user
>>
> 
> 


-- 
===================================
Ittay Dror, 
Chief architect, openQRM TL, 
R&D, Qlusters Inc.
[EMAIL PROTECTED]
+972-3-6081994 Fax: +972-3-6081841

http://www.openQRM.org
- Keeps your Data-Center Up and Running


_______________________________________________
Wicket-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to