You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "bernard (JIRA)" <ji...@apache.org> on 2013/02/03 19:38:12 UTC

[jira] [Updated] (WICKET-4997) Mounted bookmarkable Page not recreated on Session Expiry

     [ https://issues.apache.org/jira/browse/WICKET-4997?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

bernard updated WICKET-4997:
----------------------------

    Description: 
With the default true of org.apache.wicket.settings.IPageSettings#getRecreateMountedPagesAfterExpiry() PageExpiryException is thrown when a Link on a page is clicked.

I find it very useful and in fact indispensible to rely on RecreateMountedPagesAfterExpiry especially on logout links.

But it doesn't seem to work for me in 6.4.0. I think this is because Link#getUrl() calls Component#utlFor() which requires a stateless page for this to work:

		if (page.isPageStateless())
		{
			handler = new BookmarkableListenerInterfaceRequestHandler(provider, listener);
		}
		else
		{
			handler = new ListenerInterfaceRequestHandler(provider, listener);
		}

With a stateless page a url is:

http://localhost:8080/wicket/HomePage?-1.ILinkListener-toolBar-signout

With a non stateless but bookmarkable page a url is:

http://localhost:8080/wicket/page?1-1.ILinkListener-toolBar-signout

So I guess that a stateful page cannot be recovered because after session expiry Wicket cannot find out what the page is. It is not coded in the URL.

Looking at the semantics of UrlFor(), I thought this might be a bug and I copyed and changed the code in my Link subclass from

//		if (page.isPageStateless()) {
to:
        if (page.isBookmarkable()) {
		
It works as expected but I don't know whether it would break other things if implemented in Wicket.

I guess I am not the only one who needs recovery for bookmarkable pages in this way. Would it be possible to change Wicket to fix this so it becomes possible?

  was:
With the default true of org.apache.wicket.settings.IPageSettings#getRecreateMountedPagesAfterExpiry() PageExpiryException is thrown a when any one of its links is clicked.

I find it very useful and in fact indispensible to rely on RecreateMountedPagesAfterExpiry especially on logout links.

But it doesn't seem to work for me in 6.4.0. I think this is because Link#getUrl() calls Component#utlFor() which requires a stateless page for this to work:

		if (page.isPageStateless())
		{
			handler = new BookmarkableListenerInterfaceRequestHandler(provider, listener);
		}
		else
		{
			handler = new ListenerInterfaceRequestHandler(provider, listener);
		}

With a stateless page a url is:

http://localhost:8080/wicket/HomePage?-1.ILinkListener-toolBar-signout

With a non stateless but bookmarkable page a url is:

http://localhost:8080/wicket/page?1-1.ILinkListener-toolBar-signout

So I guess that a stateful page cannot be recovered because after session expiry Wicket cannot find out what the page is. It is not coded in the URL.

Looking at the semantics of UrlFor(), I thought this might be a bug and I copyed and changed the code in my Link subclass from

//		if (page.isPageStateless()) {
to:
        if (page.isBookmarkable()) {
		
It works as expected but I don't know whether it would break other things if implemented in Wicket.

I guess I am not the only one who needs recovery for bookmarkable pages in this way. Would it be possible to change Wicket to fix this so it becomes possible?

    
> Mounted bookmarkable Page not recreated on Session Expiry
> ---------------------------------------------------------
>
>                 Key: WICKET-4997
>                 URL: https://issues.apache.org/jira/browse/WICKET-4997
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 6.4.0
>         Environment: JDK 7, GlassFish 3.1.2.2
>            Reporter: bernard
>            Assignee: Pedro Santos
>         Attachments: TestCase.zip
>
>
> With the default true of org.apache.wicket.settings.IPageSettings#getRecreateMountedPagesAfterExpiry() PageExpiryException is thrown when a Link on a page is clicked.
> I find it very useful and in fact indispensible to rely on RecreateMountedPagesAfterExpiry especially on logout links.
> But it doesn't seem to work for me in 6.4.0. I think this is because Link#getUrl() calls Component#utlFor() which requires a stateless page for this to work:
> 		if (page.isPageStateless())
> 		{
> 			handler = new BookmarkableListenerInterfaceRequestHandler(provider, listener);
> 		}
> 		else
> 		{
> 			handler = new ListenerInterfaceRequestHandler(provider, listener);
> 		}
> With a stateless page a url is:
> http://localhost:8080/wicket/HomePage?-1.ILinkListener-toolBar-signout
> With a non stateless but bookmarkable page a url is:
> http://localhost:8080/wicket/page?1-1.ILinkListener-toolBar-signout
> So I guess that a stateful page cannot be recovered because after session expiry Wicket cannot find out what the page is. It is not coded in the URL.
> Looking at the semantics of UrlFor(), I thought this might be a bug and I copyed and changed the code in my Link subclass from
> //		if (page.isPageStateless()) {
> to:
>         if (page.isBookmarkable()) {
> 		
> It works as expected but I don't know whether it would break other things if implemented in Wicket.
> I guess I am not the only one who needs recovery for bookmarkable pages in this way. Would it be possible to change Wicket to fix this so it becomes possible?

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira