You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Vjeran Marcinko <vj...@tis.hr> on 2004/04/29 09:12:23 UTC
Page/component initialization complicated?
Hi.
Is there some method where I can put some page/component initialization
logic that will be called *once at the beggining of each request* ? I don't
care if page/component is newly instantiated, or fetched from pool, I don't
care if request processing is starting with rewind phase or render phase...
I just want it to be called at the beginning of each request ?
End of request is easy - PageDetachListener is for that (actually it's about
returning to pool, but it's the same thing since it happens at the end of
request).
Something like :
public void requestStarted() {
var = new Foo();
}
public void requestEnded() { // this can be achieved by pageDetached() or
initialize()
var = null;
}
Regards,
Vjeran
---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
Re[2]: Page/component initialization complicated?
Posted by "Dmitry I. Zubarovsky" <au...@rambler.ru>.
Hello Vjeran,
What about using such an approach.
Code from VLib
you page must implements this,
public interface IActivate extends IPage
{
public void activate(IRequestCycle cycle);
}
implementation:
public void activate(IRequestCycle cycle){
init(); //<-- put your initialization here
cycle.activate(this);
}
//when you need to go to your page with initialization, do the following
activatePage = (IActivate)cycle.getPage("pagename");
activatePage.activate(cycle);
Hope this helps
Regards,
Dima
VM> No good.
VM> I am looking for *true* initialization method which would be called only
VM> *once*, not pageBeginRender() method which gets called twice when using
VM> forms (during rewind and render phase).
VM> As I can see till now, the only way to set and reset some instance variable
VM> for duration of request is pretty cumbersome -
VM> I have to implement 2 interfaces, PageRenderListener and PageDetachListener,
VM> and I have to fill them as following:
VM> private Foo foo;
VM> public void pageBeginRender(PageEvent event) {
VM> if (foo == null) {
VM> foo = new Foo();
VM> }
VM> }
VM> public void pageEndRender(PageEvent event) {
VM> }
VM> public void pageDetached(PageEvent event) {
VM> foo = null;
VM> }
VM> -Vjeran
VM> ----- Original Message -----
VM> From: "Robert Zeigler" <rd...@u.arizona.edu>
VM> To: "Tapestry users" <ta...@jakarta.apache.org>
VM> Sent: Thursday, April 29, 2004 9:31 AM
VM> Subject: Re: Page/component initialization complicated?
>> Implement the PageRenderListener interface, and put your code in the
>> pageBeginRender() method.
>> eg:
>> private Foo var;
>> //a property defined in the page specification...
>> public abstract Bar getBar();
>> public abstract void setBar(Bar b);
>> public void pageBeginRender(PageEvent event) {
>> var = new Foo();
>> setBar(new Bar());
>> }
>>
>> Robert
>>
>>
>>
>> Vjeran Marcinko wrote:
>>
>> >Hi.
>> >
>> >Is there some method where I can put some page/component initialization
>> >logic that will be called *once at the beggining of each request* ? I
VM> don't
>> >care if page/component is newly instantiated, or fetched from pool, I
VM> don't
>> >care if request processing is starting with rewind phase or render
VM> phase...
>> >I just want it to be called at the beginning of each request ?
>> >
>> >End of request is easy - PageDetachListener is for that (actually it's
VM> about
>> >returning to pool, but it's the same thing since it happens at the end of
>> >request).
>> >
>> >Something like :
>> >
>> >public void requestStarted() {
>> > var = new Foo();
>> >}
>> >
>> >public void requestEnded() { // this can be achieved by pageDetached()
VM> or
>> >initialize()
>> > var = null;
>> >}
>> >
>> >Regards,
>> >Vjeran
VM> ---------------------------------------------------------------------
VM> To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
VM> For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
--
Best regards,
Dmitry mailto:aurox@rambler.ru
---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
Re: Page/component initialization complicated?
Posted by Vjeran Marcinko <vj...@tis.hr>.
No good.
I am looking for *true* initialization method which would be called only
*once*, not pageBeginRender() method which gets called twice when using
forms (during rewind and render phase).
As I can see till now, the only way to set and reset some instance variable
for duration of request is pretty cumbersome -
I have to implement 2 interfaces, PageRenderListener and PageDetachListener,
and I have to fill them as following:
private Foo foo;
public void pageBeginRender(PageEvent event) {
if (foo == null) {
foo = new Foo();
}
}
public void pageEndRender(PageEvent event) {
}
public void pageDetached(PageEvent event) {
foo = null;
}
-Vjeran
----- Original Message -----
From: "Robert Zeigler" <rd...@u.arizona.edu>
To: "Tapestry users" <ta...@jakarta.apache.org>
Sent: Thursday, April 29, 2004 9:31 AM
Subject: Re: Page/component initialization complicated?
> Implement the PageRenderListener interface, and put your code in the
> pageBeginRender() method.
> eg:
> private Foo var;
> //a property defined in the page specification...
> public abstract Bar getBar();
> public abstract void setBar(Bar b);
> public void pageBeginRender(PageEvent event) {
> var = new Foo();
> setBar(new Bar());
> }
>
> Robert
>
>
>
> Vjeran Marcinko wrote:
>
> >Hi.
> >
> >Is there some method where I can put some page/component initialization
> >logic that will be called *once at the beggining of each request* ? I
don't
> >care if page/component is newly instantiated, or fetched from pool, I
don't
> >care if request processing is starting with rewind phase or render
phase...
> >I just want it to be called at the beginning of each request ?
> >
> >End of request is easy - PageDetachListener is for that (actually it's
about
> >returning to pool, but it's the same thing since it happens at the end of
> >request).
> >
> >Something like :
> >
> >public void requestStarted() {
> > var = new Foo();
> >}
> >
> >public void requestEnded() { // this can be achieved by pageDetached()
or
> >initialize()
> > var = null;
> >}
> >
> >Regards,
> >Vjeran
---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
Re: Page/component initialization complicated?
Posted by Robert Zeigler <rd...@u.arizona.edu>.
Implement the PageRenderListener interface, and put your code in the
pageBeginRender() method.
eg:
private Foo var;
//a property defined in the page specification...
public abstract Bar getBar();
public abstract void setBar(Bar b);
public void pageBeginRender(PageEvent event) {
var = new Foo();
setBar(new Bar());
}
Robert
Vjeran Marcinko wrote:
>Hi.
>
>Is there some method where I can put some page/component initialization
>logic that will be called *once at the beggining of each request* ? I don't
>care if page/component is newly instantiated, or fetched from pool, I don't
>care if request processing is starting with rewind phase or render phase...
>I just want it to be called at the beginning of each request ?
>
>End of request is easy - PageDetachListener is for that (actually it's about
>returning to pool, but it's the same thing since it happens at the end of
>request).
>
>Something like :
>
>public void requestStarted() {
> var = new Foo();
>}
>
>public void requestEnded() { // this can be achieved by pageDetached() or
>initialize()
> var = null;
>}
>
>Regards,
>Vjeran
>
>
>---------------------------------------------------------------------
>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