Details
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 copied 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?
Attachments
Attachments
Issue Links
- is related to
-
WICKET-5521 Stateless forms does not work when RecreateMountedPagesAfterExpiry turned off
- Resolved
- relates to
-
WICKET-5084 ClassNotFoundException with Atmosphere on Bookmarkable pages
- Resolved