[
https://issues.apache.org/jira/browse/WICKET-4420?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Martin Grigorov resolved WICKET-4420.
-------------------------------------
Resolution: Fixed
Fix Version/s: 6.0.0
1.5.5
Assignee: Martin Grigorov
> Unversioned pages don't get touched when created and cannot be found by ID
> later
> --------------------------------------------------------------------------------
>
> Key: WICKET-4420
> URL: https://issues.apache.org/jira/browse/WICKET-4420
> Project: Wicket
> Issue Type: Bug
> Components: wicket
> Affects Versions: 1.5.4
> Environment: Windows 7 64-bit
> JDK 1.6.0_29 64-bit
> Jetty 6.1.16 / WebSphere 7
> Reporter: David Rain
> Assignee: Martin Grigorov
> Priority: Minor
> Labels: page, stored, version, wicket
> Fix For: 1.5.5, 6.0.0
>
>
> When I tell Wicket not to version pages by default via
> IPageSettings#setVersionPagesByDefault(false), created pages cannot be found
> later by theirs ID. Versioned pages are touched upon creation in
> dirty(boolean) method and thus stored in the page store. But unversioned ones
> are not! So when I create a Page, wrap it inside a PageProvider and
> RenderPageRequestHandler, then get its URL with urlFor, the URL is useless,
> because the page is referenced by its ID in the URL but it cannot be found by
> that URL later.
> I'll give you an simple example.
> PAGE 1:
> public class WicketMainPage extends WebPage {
> public WicketMainPage() {
> PopupPage page = new PopupPage("Created: " + new Date());
> // getSession().getPageManager().touchPage(page);
> PageProvider pp = new PageProvider(page);
> RenderPageRequestHandler rh = new
> RenderPageRequestHandler(pp);
> add(new Label("url", urlFor(rh).toString()));
> }
> }
> as you can see, I only create an instance of second page (which is not
> bookmarkable as it has some parameters), wrap it in page provider and request
> handler and simply output URL for it (of course it is an stateful URL).
> The second page is just simple outputting text from constructor
> PAGE 2:
> public class PopupPage extends WebPage {
> public PopupPage(String text) {
> add(new Label("text", text));
> }
> }
> When I run this, the app outputs an relative part of URL to the second
> page...
> if I copy this into browser, everything works, when pages are versioned. But
> when I set setVersionPagesByDefault(false) I start to get
> PageExpiredException
> whe trying to access the second page. When I uncomment the touchPage line,
> everythings works even with unversiones paged.
> I think, that instead of explicitly touching the page, it should be done by
> Wicket when retrieving the url for it. Somewhere in mapUrlFor or mapHandler,
> etc... Or maybe it should be touched in the dirty method just like versioned
> pages.
--
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