Hi Chris, I try to explain :) Say, you have a "NewsQuote" component, which shows a few lines from the 5 latest news. At the and of each quotations, there a "More" link. Now, when the user clicks on this link (an action link, for that matter), the NewsQuote component will set a request scope info saying that the news with ID=4527 is requested. And when it comes to the "News" component (it is able to show the text of a given news in full), it simply looks at this piece of info, and loads the news with id 4527 (or gets it from an app level cache :)) and renders it.
Hope it tells something about what I am up to :) thx Janos 2008/4/30 Chris Lewis <[EMAIL PROTECTED]>: > Honestly it's difficult for me to imagine a situation where I'd do that > because it seems to violate a degree of encapsulation that tapestry > imposes as a "freeing law" of the framework. The epicenter of that being > that one should not think in terms of low-level idioms such as request > parameters, and instead replace those with a higher level of application > logic that eclipses them entirely (when possible). That's not to say > that your perspective is flawed, but from the small bit of understanding > I've taken from your posts I can't see why one would do what you want. > The thing that I've been saying is missing here is, what are you trying > to do? I don't mean technically, I mean what is the end result for the > user? Understanding this is critical, but even if I don't your problem > can still be solved by using a session to serve as an arbitrary holder. > If you've settled on this architecture, why not write such a generic > service and move on? > > János Jarecsni wrote: > > Hi, > > > > I looked everywhere for usage of request scope variables, but found > nothing > > (maybe I'm impatient a bit :)... > > Is it really that unrealistic to have two components in a page, one (A) > > having an action link eventhandler where it would set some attribute for > the > > request only (not the session!) and then component B could render itself > > according to the attribute set by component A? > > > > I think it should be a piece of cake :) > > > > thx > > Janos > > > > 2008/4/30 Filip S. Adamsen <[EMAIL PROTECTED]>: > > > > > >> Nope, you're exactly right. > >> > >> -Filip > >> > >> Blower, Andy skrev: > >> > >> This is not what I understood 'perthread' scope to be. I thought that > it > >> > >>> meant that each thread using a service gets its own instance of the > service > >>> to use, even though that instance may not be the same as any previous > >>> instance it used. In other words, nothing to do with user sessions, > it's > >>> just for services that are not thread safe and cannot be singletons. > >>> > >>> Have I got the wrong end of the stick here? > >>> > >>> -----Original Message----- > >>> > >>>> From: Andy Huhn [mailto:[EMAIL PROTECTED] > >>>> Sent: 29 April 2008 17:34 > >>>> To: Tapestry users > >>>> Subject: Re: page activation + components > >>>> > >>>> > >>>> Hello, > >>>> > >>>> You can define the scope of each service...you can set that > particular > >>>> service to be tied to only one session. > >>>> > >>>> See http://tapestry.apache.org/tapestry5/tapestry-ioc/service.html, > >>>> and > >>>> search for "perthread". > >>>> > >>>> Thanks, > >>>> Andy > >>>> > >>>> On Tue, 29 Apr 2008 18:02:52 +0200, "János Jarecsni" > >>>> <[EMAIL PROTECTED]> wrote: > >>>> > >>>> > >>>>> Hi there, > >>>>> > >>>>> the service approach (as I expected) is session-agnostic (and is > >>>>> page-independent so concurrent users would interfere badly), > >>>>> > >>>>> > >>>> therefore is > >>>> > >>>> > >>>>> not ok. > >>>>> > >>>>> I will now try the Environment approach... if that is session-aware > >>>>> > >>>>> > >>>> :) > >>>> > >>>> > >>>>> thx again > >>>>> janos > >>>>> > >>>>> 2008/4/29 János Jarecsni <[EMAIL PROTECTED]>: > >>>>> > >>>>> Hi Chris, > >>>>> > >>>>>> even so you could help :) I want this kind of generic way of > >>>>>> passing > >>>>>> around information (component to component communication :)) so > >>>>>> I'll > >>>>>> > >>>>>> > >>>>> look > >>>>> > >>>>> > >>>>>> for the solutions Kristian and you outlined. > >>>>>> > >>>>>> thanks! > >>>>>> > >>>>>> cheers, > >>>>>> janos > >>>>>> > >>>>>> 2008/4/29 Chris Lewis <[EMAIL PROTECTED]>: > >>>>>> > >>>>>> Janos, > >>>>>> > >>>>>>> Without code or a description of your actual goal, I'm finding > >>>>>>> > >>>>>>> > >>>>>> your > >>>>>> > >>>>> situation too hypothetical to really digest. The one thing I can > >>>>> > >>>>>> point > >>>>>> > >>>>> out is what you said about wanting a component to set a property > >>>>> > >>>>>> in > >>>>>> > >>>>> the > >>>>> > >>>>> > >>>>>> page. If you want to do that, then you have to know the class of > >>>>>> > >>>>>> the > >>>>>> > >>>>> page and so injecting a page would make sense. Of course that > >>>>> > >>>>>> means > >>>>>> > >>>>> tightly coupling a component to a page, which to me doesn't make > >>>>> > >>>>>> sense. > >>>>>> > >>>>>> If you simply need a generic way of passing data between pages and > >>>>>> > >>>>>>> components, consider using a service that provides an untyped > >>>>>>> list > >>>>>>> > >>>>>>> > >>>>>> or > >>>>>> > >>>>> putting something in the environment as Kristian suggested. I'm > >>>>> > >>>>>> sorry > >>>>>> > >>>>> I > >>>>> > >>>>> > >>>>>> can't be more helpful but as I said I'm not clear on what you're > >>>>>> > >>>>>> really > >>>>>> > >>>>>> trying to do. > >>>>>> > >>>>>>> good luck > >>>>>>> chris > >>>>>>> > >>>>>>> János Jarecsni wrote: > >>>>>>> > >>>>>>> > >>>>>>>> Hi Chris, > >>>>>>>> > >>>>>>>> I thought of pages as "contexts" for the components embedded > >>>>>>>> > >>>>>>>> > >>>>>>> within > >>>>>>> > >>>>> them. > >>>>> > >>>>>>>> So, in one event handler of a component I would like to set > >>>>>>>> some > >>>>>>>> > >>>>>>>> > >>>>>>> property or > >>>>>>> > >>>>>>> > >>>>>>>> another (in the page object), and the other components in the > >>>>>>>> > >>>>>>>> > >>>>>>> page, > >>>>>>> > >>>>> which > >>>>> > >>>>>>>> are also able to access this property may change their > >>>>>>>> > >>>>>>>> > >>>>>>> appearance > >>>>>>> > >>>>> (say, the > >>>>> > >>>>>>>> .TML would test the property). Maybe I'm on a wrong track, > >>>>>>>> > >>>>>>>> > >>>>>>> please > >>>>>>> > >>>>> let > >>>>> > >>>>> > >>>>>> me > >>>>>> > >>>>>>>> know :) > >>>>>>>> > >>>>>>>> thx > >>>>>>>> Cheers, > >>>>>>>> janos > >>>>>>>> > >>>>>>>> 2008/4/29 Chris Lewis <[EMAIL PROTECTED]>: > >>>>>>>> > >>>>>>>> > >>>>>>>> Janos, > >>>>>>>> > >>>>>>>>> I'm having a hard time understanding a case that a component > >>>>>>>>> > >>>>>>>>> > >>>>>>>> should > >>>>>>>> > >>>>> know > >>>>> > >>>>>>>> in which page it is embedded, so my suggestion probably wasn't > >>>>>>>> > >>>>>>>> a > >>>>>>>> > >>>>> good > >>>>> > >>>>> > >>>>>> one. Activation contexts aren't meant for components but for > >>>>>> > >>>>>>>> pages > >>>>>>>> > >>>>> - > >>>>> > >>>>> > >>>>>> you > >>>>>> > >>>>>>>> should be using component parameters to configure them, and if > >>>>>>>> > >>>>>>>> it's > >>>>>>>> > >>>>> a > >>>>> > >>>>> > >>>>>> more sophisticated component, probably a service. > >>>>>> > >>>>>>>>> chris > >>>>>>>>> > >>>>>>>>> János Jarecsni wrote: > >>>>>>>>> > >>>>>>>>> and how a component can get to know the page in which it is > >>>>>>>>> > >>>>>>>>> included? I > >>>>>>>>> > >>>>>>>> mean, I can't @InjectPage, as the component will be included > >>>>>>>> > >>>>>>>>> in > >>>>>>>>> > >>>>> many > >>>>> > >>>>> > >>>>>> kinds > >>>>>> > >>>>>>>>> of pages. > >>>>>>>>> > >>>>>>>>>> @Kristian: thx for the many ways :) I'll try these, hope > >>>>>>>>>> that > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>> the > >>>>>>>>> > >>>>> @Environmental stuff is scalable (I'm trying to bypass session > >>>>> > >>>>>>>>> creation > >>>>>>>>> > >>>>>>>> as > >>>>>>>> > >>>>>>>>> much as possible) > >>>>>>>>> > >>>>>>>>>> Is there a doc on the various annotations available? > >>>>>>>>>> > >>>>>>>>>> @Michael: > >>>>>>>>>> Could you include a tiny bit of example? THX! > >>>>>>>>>> > >>>>>>>>>> Thx to you all > >>>>>>>>>> cheers > >>>>>>>>>> janos > >>>>>>>>>> > >>>>>>>>>> 2008/4/29 Chris Lewis <[EMAIL PROTECTED]>: > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> 5) @InjectPage the page and call the getter > >>>>>>>>>> > >>>>>>>>>>> Kristian Marinkovic wrote: > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>> hi janos, > >>>>>>>>>>> > >>>>>>>>>>>> there are several possibilities: > >>>>>>>>>>>> > >>>>>>>>>>>> 1) declare a component parameter and pass in the > >>>>>>>>>>>> variable > >>>>>>>>>>>> > >>>>>>>>>>>> 2) put it in a ASO and inject the ASO in all your > >>>>>>>>>>>> components > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>> (using > >>>>>>>>>>> > >>>>>>>> @ApplicationState) > >>>>>>>> > >>>>>>>>>>>> the drawback is that any other page or component will > >>>>>>>>>>>> be > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>> able to > >>>>>>>>>>> > >>>>> access > >>>>> > >>>>>>>>> the ASO > >>>>>>>>> > >>>>>>>>>>>> 3) put it into the Environment and read it whereever > >>>>>>>>>>>> you > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>> need it > >>>>>>>>>>> > >>>>> in > >>>>> > >>>>>>>> your > >>>>>>>> > >>>>>>>>> nested components. > >>>>>>>>> > >>>>>>>>>>>> be careful when you put your object in your > >>>>>>>>>>>> environment. if > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>> you > >>>>>>>>>>> > >>>>> put it > >>>>> > >>>>>>>>>>>> in > >>>>>>>>>>>> > >>>>>>>>>>> during the action > >>>>>>>>>>> > >>>>>>>>>>>> request it will not be able in the render request > >>>>>>>>>>>> (because > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>> of > >>>>>>>>>>> > >>>>> the > >>>>> > >>>>> > >>>>>> page > >>>>>> > >>>>>>>> redirect). > >>>>>>>> > >>>>>>>>>>>> page: > >>>>>>>>>>>> > >>>>>>>>>>>> @Inject Environment env; > >>>>>>>>>>>> > >>>>>>>>>>>> @Persist("flash") whateverclass w; > >>>>>>>>>>>> > >>>>>>>>>>>> onActivate(w) { this.w= w } > >>>>>>>>>>>> > >>>>>>>>>>>> setupRender() { env.push(whateverclass.class,w);} > >>>>>>>>>>>> > >>>>>>>>>>>> components: > >>>>>>>>>>>> > >>>>>>>>>>>> @Environmental Whateverclass var; > >>>>>>>>>>>> > >>>>>>>>>>>> 4) define a service that can take this variable (and > >>>>>>>>>>>> saves > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>> it > >>>>>>>>>>> > >>>>>>>>>>>> appropriatly > >>>>>>>>>>>> > >>>>>>>>>>> so it is not > >>>>>>>>>>> > >>>>>>>>>>>> lost on a redirect:)) and inject your service in the > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>> components > >>>>>>>>>>> > >>>>> where > >>>>> > >>>>>>>> needed > >>>>>>>> > >>>>>>>>>>>> to retrieve the value. > >>>>>>>>>>>> > >>>>>>>>>>>> maybe there are some more possibilities :) > >>>>>>>>>>>> > >>>>>>>>>>>> g, > >>>>>>>>>>>> kris > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> "János Jarecsni" <[EMAIL PROTECTED]> > >>>>>>>>>>>> 29.04.2008 08:15 > >>>>>>>>>>>> Bitte antworten an > >>>>>>>>>>>> "Tapestry users" <users@tapestry.apache.org> > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> An > >>>>>>>>>>>> "Tapestry users" <users@tapestry.apache.org> > >>>>>>>>>>>> Kopie > >>>>>>>>>>>> > >>>>>>>>>>>> Thema > >>>>>>>>>>>> page activation + components > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> Hi there, > >>>>>>>>>>>> > >>>>>>>>>>>> I have an activatable page, in its onActivate(String > >>>>>>>>>>>> param) > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>> method > >>>>>>>>>>> > >>>>>> I > >>>>>> > >>>>>>>>>>>> save > >>>>>>>>>>>> > >>>>>>>>>>> the param to a normal instance variable of the page > >>>>>>>>>>> > >>>>>>>>>>>> class > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>> (no > >>>>>>>>>>> > >>>>> persistence!). > >>>>> > >>>>>>>>>>>> How can any component embedded within this page access > >>>>>>>>>>>> this > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>> variable? > >>>>>>>>>>> > >>>>>>>> the page class: > >>>>>>>> > >>>>>>>>>>>> //... > >>>>>>>>>>>> private String param; > >>>>>>>>>>>> > >>>>>>>>>>>> public void onActivate(String param) { > >>>>>>>>>>>> this.param = param; > >>>>>>>>>>>> } > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> public String getParam() {...} > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> Thx in advance! > >>>>>>>>>>>> Janos > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> -- > >>>>>>>>>>>> > >>>>>>>>>>> http://thegodcode.net > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>> > ------------------------------------------------------------------ > >>>>>>>>>>> > >>>>>> --- > >>>>>> > >>>>> To unsubscribe, e-mail: [EMAIL PROTECTED] > >>>>> > >>>>>>>>>>> For additional commands, e-mail: users- > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>> [EMAIL PROTECTED] > >>>>>>>>>> > >>>>>>>>>>> -- > >>>>>>>>>>> > >>>>>>>>> http://thegodcode.net > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > --------------------------------------------------------------------- > >>>>>>>>> > >>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED] > >>>>>> > >>>>>>>>> For additional commands, e-mail: > >>>>>>>>> [EMAIL PROTECTED] > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> -- > >>>>>>>>> > >>>>>>> http://thegodcode.net > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> ------------------------------------------------------------------ > >>>>>>> > >>>>>>> > >>>>>> --- > >>>>>> > >>>>> 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] > >>>> > >>>> > >>> > >> --------------------------------------------------------------------- > >> > >> To unsubscribe, e-mail: [EMAIL PROTECTED] > >> For additional commands, e-mail: [EMAIL PROTECTED] > >> > >> > >> > > -- > http://thegodcode.net > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > >