[
https://issues.apache.org/jira/browse/WICKET-4441?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14017521#comment-14017521
]
Martin Grigorov commented on WICKET-4441:
-----------------------------------------
It is a change in the behavior and that's why I applied it only in Wicket 7.x.
As you can see at
https://git-wip-us.apache.org/repos/asf/wicket/repo?p=wicket.git;a=commitdiff;h=a53591f030b87b5d1552e567226705020dee2a62
many test expectations have changed due to this change.
Maybe we should poll at dev@ whether it is OK to backport to 6.x ?
> PageProvider should create a new Page instance if PageParameters are changed,
> even if a stored page exists.
> -----------------------------------------------------------------------------------------------------------
>
> Key: WICKET-4441
> URL: https://issues.apache.org/jira/browse/WICKET-4441
> Project: Wicket
> Issue Type: Bug
> Components: wicket
> Affects Versions: 1.5.5
> Environment: all platform.
> Reporter: Tsutomu YANO
> Assignee: Martin Grigorov
> Fix For: 7.0.0-M1
>
> Attachments: WICKET-4441.patch, fix-WICKET-4441.patch,
> pagebug.tar.gz, pagebug2.tar.gz
>
>
> The 'getStoredPage(int)' method returns a stored page instance even if user
> changes parameter values encoded into URL, and the PageParameters object of
> the stored page instance is never changed. So same page is displayed always
> though user changes url on browser manually.
> ** HOW TO REPRODUCT **
> 1. unpack the attached sample project 'pagebug.tar.gz'.
> 2. mvn jetty:run
> 3. access to http://localhost:8080/user/user1
> You will see a form filled with information about user 1. The user's name is
> 'user 1', age is 30 and country is 'Japan'.
> The mount path of this page is '/user/${userId}'. so 'user1' in the accessed
> url is a parameter value.
> after accessing to the url, the url will be changed to
> http://localhost:8080/user/user1?0 . it contains the page id of the
> currently displayed page.
> 4. change some values and submit the form. page id will be changed on every
> submit.
> 5. change only parameter value in url to 'user2'. Never change page-id.
> for example, if you now access to http://localhost:8080/user/user1?5, change
> the url to http://localhost:8080/user/user2?5 .
> 6. This program must display information about user2, because the parameter
> value of url is changed. But you will see the information of user 1. Wicket
> always display the page of page-id = 5 (even though user changed url
> manually).
> In this sample program, I use LoadableDetachableModel for retrieving current
> parameter-value. But I don't get the new parameter-value because
> pageParameters object in a page instance is never changed after the
> construction. pageParameters is fixed in the constructor of Page class.
> I think that there are no easy way to retrieve parameter-values encoded into
> mount-path. Request.getRequestParameters() does not contain parameters
> encoded into mount-path. So there are no work-around for this issue.
> ** HOW TO FIX THIS ISSUE **
> We must return null from getStoredPage(int) method of PageProvider class, if
> current PageParameters is not same with the PageParameters of a stored page.
> In current code, getStoredPage(int) checks only if the class of both pages
> are same. We must check the PageParameters of both pages.
> ** PATCH **
> I attached a pache for PageProvider class. try it.
--
This message was sent by Atlassian JIRA
(v6.2#6252)