You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Paul Ferraro <pa...@softhome.net> on 2003/09/02 18:42:01 UTC

RE: persistent page properties

These pages should help demystify the dynamic sub-class generation
magic:

http://jakarta.apache.org/tapestry/doc/TapestryUsersGuide/state.page-properties.html
http://jakarta.apache.org/tapestry/doc/TapestryUsersGuide/state.manual-page-properties.html

Hope this helps,

Paul

On Fri, 2003-08-29 at 23:49, Dustin Frazier wrote:
> Almost.  :)  The problem with your solution (unless I'm missing something) is
> that, when a new search gets executed, the new list of ids gets set from the
> search form component, but the getter used by the search results page doesn't
> know that the list of objects needs to be re-fetched (it's not null, just out
> of date).  I could set the list of objects to null whenever the list of ids is
> set, but that sounds a lot like...
> 
> I solved the problem by creating a method on the results page to fetch the
> objects from the list of ids, and I only call this method from the search form
> component right after it sets the list of ids on the results page.  Kinda
> clunky, and it forces to query right away, which is why I was hoping for
> something a little more elegant and lazy.
> 
> Just so I understand, what prevents Tapestry from doing it's subclassing magic
> when you've written explicit setters and/or getters in your Java code?
> 
> Dustin
> 
> -----Original Message-----
> From: Harish Krishnaswamy [mailto:hkrishnaswamy@comcast.net] 
> Sent: Friday, August 29, 2003 9:34 PM
> To: Tapestry users
> Subject: Re: persistent page properties
> 
> 
> The common solution in such situations has been to use a synthetic 
> property. So, you declare a persistent property via 
> property-specification and use it for storage. Write a getter in your 
> class to build the list and use this getter in the form. This getter can 
> store the retrieved / built list in the synthetic property created via 
> property-specification and later retrieve it if it is available or build 
> it again if not available. Hope this solves your problem.
> 
> -Harish
> 
> Dustin Frazier wrote:
> 
> >First the heart of the question, then some background:  Does Tapestry 
> >allow you to declare a persistent page property in your .page file when 
> >you also have an explicit setter and getter (using a private field) in 
> >your Java code? Does it actually still persist the property value in 
> >that case (and restore it when the page is restored from the pool)?
> >
> >I'm trying to do a very standard search form, search results, and 
> >details page.  I have a search form component which takes some text, 
> >passes it to our db code and gets back a data structure which 
> >represents the search results (basically a count and a list of ids).  
> >In the listener method for the search form component, I get an instance 
> >of my search results page via cycle.getPage(), set the search data 
> >structure on it (into a persistent property), and activate the page.
> >
> >The search results page displays its results as a table built with a 
> >Foreach that loops over a list of *actual objects* which is lazily 
> >initialized using a single query when the object list is first 
> >requested by the Foreach.  Each row in the results table has an 
> >ActionLink to show a details page for the given object.  The listener 
> >method for the link looks up the "current" object (during rewind of the 
> >results page), gets an instance of my details page, sets the object on 
> >the page, and activates the page.
> >
> >So, here's my issue.  The list of actual objects on the results page 
> >needs to persist, because otherwise the query to fetch them using the 
> >ids will happen twice, once when rendering the results page, and again 
> >during the rewind after the user clicks one of the details links.  I 
> >have to do the query either in the getter for the object list or the 
> >setter for the list of ids. Unfortunately, that seems to lose when I 
> >also declare the properties as persistent.
> >
> >If you're still with me and have any insights, I'd much appreciate 
> >it...  I'm guessing perhaps I have to do this particular persistent 
> >property the old school way, but I'm hoping there's a more clever 
> >solution.
> >
> >Thanks!!!
> >
> >Dustin
> >
> >
> >---------------------------------------------------------------------
> >To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
> >For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
> >
> >
> >  
> >
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
>