You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "IWAMURO Motonori (JIRA)" <ji...@apache.org> on 2010/04/07 17:56:34 UTC

[jira] Commented: (WICKET-2827) Removed page might revive when push back-button

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

IWAMURO Motonori commented on WICKET-2827:
------------------------------------------

Oh, my patch doesn't work for "getPageMap().remove()" ...

> Removed page might revive when push back-button
> -----------------------------------------------
>
>                 Key: WICKET-2827
>                 URL: https://issues.apache.org/jira/browse/WICKET-2827
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 1.4.7
>         Environment: Windows XP SP3 (32bit), Java 6.0 update 19, and Tomcat 6.0.20
>            Reporter: IWAMURO Motonori
>         Attachments: expire-test.zip, removepage.patch
>
>
> Hi.
> The removed page might revive.
> This is caused in the following conditions:
> 1) "getPageMap().remove(this)" or "getPageMap().remove()" on onXXX() handler. (e.g. Link#onClick())
> 2) Screen transition using "setResponsePage(NextPage.class)".
> 3) Push back-button on NextPage.
> 4) The removed page revive.
> This cause is as follows:
> a) When NextPage is displayed, the removed page remains in  "org.apache.wicket.protocol.http.SecondLevelCacheSessionStore.SecondLevelCachePageMap.lastPage".
> b) When the removed page is re-displayed by back-button, SecondLevelCachePageMap.get(int, int) revive the page by lastPage.
> The problem doesn't happen when use "setResponsePage(new NextPage())" instead of "setResponsePage(NextPage.class)".
> Because "lastPage" is overwritten by the instance of NextPage.
> It is my patch as follows:
> Index: src/main/java/org/apache/wicket/protocol/http/SecondLevelCacheSessionStore.java
> ===================================================================
> --- src/main/java/org/apache/wicket/protocol/http/SecondLevelCacheSessionStore.java	(revision 930858)
> +++ src/main/java/org/apache/wicket/protocol/http/SecondLevelCacheSessionStore.java	(working copy)
> @@ -348,6 +348,7 @@
>  			{
>  				getStore().removePage(sessionId, getName(), -1);
>  			}
> +			lastPage = null;
>  		}
>  
>  		/**
> @@ -361,6 +362,9 @@
>  			{
>  				getStore().removePage(sessionId, getName(), entry.getNumericId());
>  			}
> +			if (lastPage instanceof Page && ((Page) lastPage).getPageMapEntry() == entry) {
> +				lastPage = null;
> +			}
>  		}
>  
>  		private IPageStore getStore()

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.