if you inject the Tapestry Request services - available in any pages, components and mixins - you can access the HttpSession in an abstract way via the Session interface. If you want the real stuff you can inject the RequestGlobals instance :)
nevertheless i'd not use the HttpSession directly but try to use one of the provided services to do so. For example you can inject the ApplicationStateManager to put/get instances from the HttpSession. The only thing you have to be aware of is that if you put in a instance with the classname foo.class any page that declares @ApplicationState Foo f; will have this instance you could also use a PropertyShadowBuilder to abstract the access to a certain property/attribute of the HttpSession ... but that's another story :) i'm still not sure what your use-case is. if you elaborate more on your problem will probably be able to give a more concise advice :) g, kris "János Jarecsni" <[EMAIL PROTECTED]> 30.04.2008 08:50 Bitte antworten an "Tapestry users" <users@tapestry.apache.org> An "Tapestry users" <users@tapestry.apache.org> Kopie Thema Re: page activation + components Hi, thx for the info! Another idea... is there a HttpRequest like object available to components and pages? If it were, then setting a request attribute would be ok for me. Anyway the per-request service is similar to this, so it will be ok for me. thx again janos 2008/4/29 Andy Huhn <[EMAIL PROTECTED]>: > > 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: [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] > >