Hi,
I am using Wicket 1.4.x with HybridUrlCodingStrategy and I have a situation
very similar to one described in WICKET-4488. HybridUrlCodingStrategy does
a check whether existing page has the same mount path but there is no check
if existing page parameters have the same values as in the current request.
WICKET-4488 does not solve this issue.
Here is an example from this issue but a little bit modified - I am using
the same page mount but with different parameter:
I have a 1 mount /page1 with parameter id and the following sequence:
1-With a new session, user visits "/page1/id/555". Displayed URL is
"/page1/id/555?0"
2-Whatever, without expiring session
3-User requests URL "/page1/id/666?0" because it was bookmarked, received
via email, etc.
4-Rendered page is "/page1/id/666?0" which was stored in the page map. But
actual page displayed is with page parameter id=555. So the wrong object is
presented on the screen.
Probably the same issue exists in 1.5.x, 6.x versions.
In 1.4.x to HybridUrlCodingStrategy.decode() I have modified a condition:
if ((page != null) && page.getClass().equals(pageClassRef.get()))
to:
if ((page != null) && page.getClass().equals(pageClassRef.get())
&& parametersEqual(page.getPageParameters(), parameters))
where parametersEqual(...) method check two PageParameters equality.
Maybe it should be corrected in newer Wicket versions also?
--
Best regards,
Daniel