> On Thu, Feb 9, 2012 at 1:37 PM, Martin Grigorov <mgrigorov <at> apache.org>
wrote:
> > Hi,
> >
> > I'm not sure whether this is the fix for this problem but we improved
> > org.apache.wicket.request.cycle.RequestCycle#setResponsePage(Page)
> > to set statelessHint to false even for stateless pages because without
> > saving them in the store we are not able to find them later after the
> > redirect.
> >
> > If you want to be stateless then you need to use
> > #setResponsePage(Class<Page>) instead. Redirecting to a pre-created
> > page instance is not stateless at all - stateless means that a new
> > page instance will be created for each request.
> >
> > On Thu, Feb 9, 2012 at 8:55 AM, David Rain <david_rain <at> kb.cz> wrote:
> >> Martin Grigorov <mgrigorov <at> apache.org> writes:
> >>
> >>>
> >>> can you create a ticket for this. I think I know what happens
> >>> thanks!
> >>>
> >>> On Fri, Sep 9, 2011 at 6:57 PM, pasto <peter.pastrnak <at> gmail.com>
wrote:
> >>> > Hi,
> >>> >
> >>> > in Wicket 1.5 RC7 is f.e. the RedirectPage set to unversioned, that
makes
> >> it
> >>> > impossible to render using the REDIRECT_TO_RENDER strategy. Because of
this
> >>> > flag the page instance is not being stored in the PageMap store, so it
is
> >>> > not accessible during the render phase. Is there some setting that can
tell
> >>> > Wicket to set unversioned pages as dirty (touch the page in
pagemanager)
> >>> > when using this strategy? Or I just didn't get the point? :)
> >>> >
> >>> > Thank you,
> >>> > Peter.
> >>> >
> >>> > --
> >>> > View this message in context: http://apache-
> >> wicket.1842946.n4.nabble.com/Expiration-of-unversioned-pages-in-Wicket-1-
5-
> >> tp3802099p3802099.html
> >>> > Sent from the Users forum mailing list archive at Nabble.com.
> >>> >
> >>> > ---------------------------------------------------------------------
> >>> > To unsubscribe, e-mail: users-unsubscribe <at> wicket.apache.org
> >>> > For additional commands, e-mail: users-help <at> wicket.apache.org
> >>> >
> >>> >
> >>>
> >>
> >>
> >> Hi Martin!
> >> I'm interested if an issue was created for this bug and if the problem was
> >> solved then? I couldn't find it anywhere in JIRA and I am now facing the
> >> (nearly) same problem.
> >> I create the page (stateless), wrap it in PageProvider and
> >> RenderPageRequestHandler and make urlFor it to navigate a pure javascript
> >> modal window to it. But I get PageExpiredException for that new Page.
> >> If I call getSession().getPageManager().touchPage(...) after creation,
> >> everything's fine, but I think this is not conceptual (I use it just as
hotfix)
> >>
> >> Running Wicket 1.5.4
> >>
> >> Thanks for reply!
> >>
> >> David
> >>
> >>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: users-unsubscribe <at> wicket.apache.org
> >> For additional commands, e-mail: users-help <at> wicket.apache.org
> >>
> >
> >
> >
> > --
> > Martin Grigorov
> > jWeekend
> > Training, Consulting, Development
> > http://jWeekend.com
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe <at> wicket.apache.org
> > For additional commands, e-mail: users-help <at> wicket.apache.org
> >
>
Hi Martin!
Sorry for confusion! I didn't mean stateless page, but unversioned one. I'll
give you an simplest example, it will do best:
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 tried to debug the code of Wicket and I noticed, then the page is touched
and thus stored in touched pages adn then in page map only when it is
versioned.
So with unversiones paged, the second request (which carries only a pageId in
URL in form /wicket/page?1...) does not find the page by id and the
PageProvider throws the exception in getPageInstance().
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...
Thanks for your patience.
David
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]