[ 
https://issues.apache.org/jira/browse/WICKET-4441?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13262453#comment-13262453
 ] 

Martin Grigorov edited comment on WICKET-4441 at 4/26/12 8:18 AM:
------------------------------------------------------------------

This change should be reverted. it breaks Ajax links as I found earlier. Even 
the assumption that empty parameters are OK is not valid.
Autocompleter, AjaxEditableLabel, ... are broken due to this.
                
      was (Author: mgrigorov):
    This change should be reverted. I breaks Ajax links as I found earlier. 
Even the assumption that empty parameters are OK is not valid.
Autocompleter, AjaxEditableLabel, ... are broken due to this.
                  
> 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: 1.5.6, 6.0.0-RC1
>
>         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 is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to