Your second suggestion seems pretty solid, but I think people do make non-trivial component hierarchy changes in onBeforeRender. Why not just freeze the page version during rendering of reuseItems=false ListViews? You know the content will be thrown away so a new page version doesn't seem appropriate.
On Wed, Apr 11, 2012 at 11:47 PM, Igor Vaynberg <igor.vaynb...@gmail.com>wrote: > whats happening is this > > user hits the page /foo > goes to /foo?1 > does a bunch of ajax stuff, staying on /foo?1 > clicks refresh, so hits /foo?1 > listview refreshes, changing hierarchy, creating page version 2 > the ajax behavior's url is rendered as /foo?2:... > the page is rendered, but not redirected to /foo?2 > > so what we have now is a browser pointing to /foo?1 and ajax (and > non-ajax) urls pointing to /foo?2 > > further clicks work only because the component they repaint has the > same markup id on page 1 and page 2. however, all model changes are > stored in page 2. this is why when the browser is refreshed the > counter reverts to a previous value - because it is page 1 that is > rerendered. > > there are two ways to fix this: > > 1) redirect to correct version. so when the browser is refreshed for > the first time on /foo?1 the browser would redirect to /foo?2 and it > would keep doing that for every refresh. not ideal. > > 2) freeze the page version when we are accessing a url that we know > will not mutate the state of the page - meaning urls that just render > the page and do not invoke any listeners. the only state we will lose > is noise from component replacement in listviews and user's > onbeforerender() overrides which i think is acceptable since they do > not represent true state mutation that comes from intentional > callbacks. > > -igor > > > On Wed, Apr 11, 2012 at 6:40 PM, Dan Retzlaff <dretzl...@gmail.com> wrote: > >> I don't know exactly what is making the page dirty in this case. > > > > The AJAX debug window has a ListView in it. > > > > On Wed, Apr 11, 2012 at 7:09 PM, Nelson Segura <nsegu...@gmail.com> > wrote: > > > >> Sorry, you dont have to refresh 4 times, just once :p > >> -Nelson > >> > >> On Wed, Apr 11, 2012 at 6:08 PM, Nelson Segura <nsegu...@gmail.com> > wrote: > >> > This is easily reproduceable in the wicket sample pages: > >> > > >> > http://www.wicket-library.com/wicket-examples/ajax/links > >> > > >> > 1. Click on the increment link for Counter 2 for times. Counter shows > 4. > >> > 2. CTRL-R/refresh 4 times, the counter still shows 4. > >> > 3. Click on link 4 more times. Counter shows 8 > >> > 4.CTRL-R/refresh once more, the counter shows 4! > >> > > >> > I don't know exactly what is making the page dirty in this case. > >> > > >> > Can you confirm this behavior in the sample page? > >> > > >> > -Nelson > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > >> For additional commands, e-mail: users-h...@wicket.apache.org > >> > >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > >