FWIW:

The below approach doesn't work when using DirectLink, as I discovered
when converting the sadly deprecated ActionLink components.  Instead,
implement PageAttachListener and replace the pageBeginRender method with
pageAttached method.   Also, RC1 and RC2 do not call pageAttached, but
B13 and RC3 do.

/dev/mrg


-----Original Message-----
From: Gentry, Michael (Contractor) [mailto:[EMAIL PROTECTED]

Sent: Friday, December 23, 2005 9:24 AM
To: Tapestry users
Subject: RE: Re: Abstract superclass for pages with injection in T4?


Yeah, I'm using Java 1.4.2 and I just couldn't get the injects in the
.page to inherit.

Following Derick's tip, I came up with this (if it helps anyone else),
which seems to work so far (although I'm not claiming it to be the best
way):

public abstract class Page extends BasePage implements
PageBeginRenderListener
{
  private ApplicationStateManager stateManager = null;

  public void pageBeginRender(PageEvent event)
  {
    if (stateManager == null)
      stateManager =
event.getRequestCycle().getInfrastructure().getApplicationStateManager()
;
  }

  public Application getApplication()
  {
    return (Application) stateManager.get("application");
  }

  public Session getSession()
  {
    return (Session) stateManager.get("session");
  }

  public boolean getSessionExists()
  {
    return stateManager.exists("session");
  }
}

Thanks for the tips!

/dev/mrg

PS. "application" = "global" and "session" = "visit" -- I renamed
everything to make sure I caught omissions/errors.


-----Original Message-----
From: news [mailto:[EMAIL PROTECTED] On Behalf Of Ron Piterman
Sent: Thursday, December 22, 2005 7:28 PM
To: [email protected]
Subject: Re: Abstract superclass for pages with injection in T4?


ok - it seems you don't use jdk1.5. the .page file does not get
inherited.
The only solution I can see is copy/paste the <inject to all your .page 
defs.

Gentry, Michael (Contractor) wrote:
> Since getVisit() and getGlobal() have been deprecated and I need the
> visit on every page in my application and the global on some of them,
I
> decided to try to roll my own solution.  I've searched through the
> documentation and this list, but still haven't stumbled across the
right
> magic.  What I have is:
> 
> AbstractPage (Tapestry)
>   BasePage (Tapestry)
>     CommonPage (Mine)
>       Home/etc (Mine)
> 
> In CommonPage.java I have:
> 
> public abstract class CommonPage extends BasePage
> {
>   public abstract Application getApplication(); // was getGlobal()
>   public abstract Session getSession(); // was getVisit()
> }
> 
> CommonPage.page contains:
> 
> ...
>   <inject property="session" type="state" object="session"/>
> ...
> 
> Home extends CommonPage.  I also have a hivemodule.xml file.  When I
> load Home, the session is never injected and getSession returns null.
> If I move the <inject...> from CommonPage.page to Home.page, the
> injection will occur and I'll get a session.  However, I don't want to
> have to have an <inject...> in every single .page (seems kind of
silly).
> 
> Does anyone have suggestions for making this work?  I could continue
> using getVisit() and getGlobal(), but I really don't want any warnings
> (even if they are just deprecation) present in my build.  Also, I
never
> could stumble upon the correct <inject...> syntax for a global object.
> 
> Thanks!
> 
> /dev/mrg
> 
> PS. T4 RC1 with Java 1.4.2.
> 
> ---------------------------------------------------------------------
> 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]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to