Hi, We are in the lucky situation to fix a PageExpiredException bug and improve performance at the same.
WICKET-4997 can be resolved with 2 lines of source code. Component#urlFor() currently calls page.isPageStateless() (very expensive) for every URL on a page where it should call page.isBookmarkable() (very cheap). Unfortunately, it consequently uses the wrong IRequestHandler for a bookmarkable page. This results in PageExpiredException for bookmarkable links which breaks the contract of IPageSettings#setRecreateMountedPagesAfterExpiry(boolean recreateMountedPagesAfterExpiry). I wonder if this 2 line change could be included in the next release? The change breaks quite a few tests because of the necessary change of expected responses in URLs (no surprise there, it is the unexpected bookmarkable component in the URL where it currrently is just "/page"). I have also seen a test that expects PageExpiredException which will no longer occur in that context. Thanks, Bernard