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]
>
>

Reply via email to