Short description :-
When using mounted pages, wicket redirects to wrong URL, after BrowserInfoPage, 
which
is called by Session.get().getClientInfo(), when gatherExtendedBrowserInfo is 
true in
RequestCycleSettings.

Long description :-

I need to determine the Client's time zone in my webapplication.
So I have set getRequestCycleSettings().setGaterExtendedBroserInfo(true) in my 
application class.

And in my BasePage.java's (which is the super class for all my pages) 
constructor 
I have set getSession().getClientInfo(), to trigger the redirect to 
BrowserInfoPage as per the javadocs.

My webapp context is /scheduler/ and my wicket application is mapped to /app/ 
(i.e. /scheduler/app/ ).
I have kept all my pages in one package and mounted that package to "/pages", 
ie.
the pages are accessed via http://host/scheduler/app/pages/XYZPage etc.

When I submit the request to
http://host/scheduler/app/

This is what happens (I have recorded the HTTP traffic via wireshark).
GET http://host/scheduler/app/
Temporary Redirect to http://host/scheduler/app/pages/HomePage (this is my home 
page).
GET http://host/scheduler/app/pages/HomePage
Temporary Redirect to http://host/scheduler/app/pages/../;jsessionID=...... 
(this is the BrowserInfo Page).
GET http://host/scheduler/app/;JSESSIONID=.....  (get the browser info page).
POST to browser info page.
Temporary redirect to http://host/scheduler/app/pages/../../app/pages/HomePage 
(redirect from browser info page, after it has populated ClientProperties).


The problem is that last redirect is wrong. 
The path http://host/scheduler/app/pages/../../app/pages/HomePage 
translates to http://host/app/pages/HomePage

i.e. I lose the webapp context path (/scheduler/) because of the path being 2 
levels up.
and I get a 404 after that.

I suspect the culprit is the 
throw new RestartResponseAtInterceptPageException(new 
BrowserInfoPage(getRequest().getRelativePathPrefixToContextRoot() + 
getRequest().getURL()));


In WebRequestCycle.java.

The getRelativePathPrefixToContextRoot() is computed wrongly 
as /scheduler/app/../.. instead of /scheduler/app/.. because the context root 
is /scheduler/ and not "/"

Any thoughts on how to fix this ?

thanks
bhaskar


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to