The old WebObjects backtracking feature (a similar concept) kept only the last 30 pages by default. If the user got too busy with the back button he'd get an error page "You backtracked too far."
----- Original Message ----- From: "Pablo Ruggia" <[EMAIL PROTECTED]> To: "Tapestry users" <tapestry-user@jakarta.apache.org> Sent: Tuesday, May 17, 2005 1:01 AM Subject: Re: Tapestry's Simplicity Blues On 5/12/05, Patrick Casey <[EMAIL PROTECTED]> wrote: > > > > -----Original Message----- > > From: Howard Lewis Ship [mailto:[EMAIL PROTECTED] > > Sent: Thursday, May 12, 2005 9:11 AM > > To: Tapestry users > > Subject: Re: Tapestry's Simplicity Blues > > > > Wish I had had the foresight five years ago to build in explicit > > support for a visual builder. > > > > 4.0 is adding flexibility to store state in many places, currently in > > the session (as in 3.0) but also as query parameters / hidden form > > fields. Further nuances will likely be possible in the future as well > > ... I'd like to see support for WebObjects style state storage, where > > multiple versions of the property are stored on the server, and the > > client includes query parameter to select which version was in effect > > when the page rendered. > <snip> > > I actually rolled a (primitive) version of the functionality you're > describing last week. Each of my pages now has "base" properties and > "persistent" properties. All persistent properties aren't stored in the page > object, but rather in an attached persistent object e.g. > > Public class foo extends BasePage { > > Private FormProperties fPersistentProperties; > Private String fSomeNonPersistentString > > Public String getSomePersistentProperty() { > Return fPersistentProperties.getSomePersistentProperty(); > } > > Then the when the page starts rendering I generate a unique key for this > particular page rendering and stuff it into the page as it renders. After > page render I then drop the persistent properties into a linked hashmap in > the visit object, using the previously generated key. > > Then, whenever any link or button on the aforementioned form is clicked on > the client, I bootstrap the page back into the appropriate state by yanking > the persistent properties out of the visit object by way of the key. > > It seems to be working fine for me, although it's a wee bit expensive on the > memory front, burning about 200 bytes per page render, so I had to put a cap > on the number of pages I remember per user and only keep around the last 100 > pages per user. If the user clicks a link that references a page that's been > flushed, I just throw a stale link. > > The specific code's pretty closely linked to my particular implementation, > but the approach might work in a more general case approach. > > --- Pat > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > I'm doing something similar, I like this aproach. But i'm really afraid of how much memory it will eat up, and I can't estimate what a reasonable limit of pages to save is. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]