I've struggled with many internal classes to see how generic
components could be achieved,
but after failing to find simple way to pass generic declaration to component.

I found a way to do it from inside the component,
but it works only for components, not for pages...

I'm still looking is there a real bebefit from this...

If this is helpful for you,
I can give you the snippet ...

Davor Hrg


On Wed, Feb 27, 2008 at 1:48 PM, Angelo Chen <[EMAIL PROTECTED]> wrote:
>
>  Hi Howard,
>
>  This is a very nice feature, in my app, I have many small tables, say 30, so
>  to edit those 30 objects I have to create 30 page classes without template,
>  that's a big saving. I'd like to save further, is there a way that we can
>  create a generic page class that can be called from other pages? if this is
>  possible then we save another 30 page classes. if this is not possbile I am
>  thinking of 'embedding' the edit class in a main page class, say:
>
>  // main page class for applicants
>
>  public class AdminApplicant {
>
>         // nested page class for the AdminApplicant.tml to call edit objects
>
>     public class Edit extends EditPage<Applicant> {
>     };
>  }
>
>  but the "embedded" Edit class is not visible in the AdminApplicant.tml, is
>  there a way to make this works?
>
>  Thanks,,
>
>  A.C.
>
>
>
>
>  Howard Lewis Ship wrote:
>  >
>  > To be more specified,
>  >
>  > you can define a base class:
>  >
>  > package com.myapp.base;
>  >
>  > public class EditPage<T> {
>  >
>  >   @Persist private T _object;
>  >
>  >   public T getObject() { return _object; }
>  >
>  >   public void setObject(T object) { _object = object; }
>  >
>  >  . . .
>  > }
>  >
>  > So you can create a page that can edit an arbitrary object.  EditPage
>  > will have its own Tapestry template containing, say, a BeanEditForm.
>  >
>  > Now, you can define a new class:
>  >
>  > package com.myapp.pages;
>  >
>  > public class EditAccount extends EditPage<Account>
>  > {
>  > }
>  >
>  > EditAccount will inherit logic and template from EditPage.
>  >
>  > Further, the getObject() and setObject() properties will be bound to
>  > the type Account.  This takes some doing, as the type of property
>  > object of class EditPage is nominally java.lang.Object (due to type
>  > erasure).  However, Tapestry does a bit of work with reflection to
>  > deduce the effective type of the property (Account).
>  >
>  > This is a very, very high level of reuse ... and once again, we are
>  > leveraging Java's type system to help us, rather than traditional Java
>  > coding where we spend our time "appeasing" the type system.
>  >
>  >
>  >
>
>  --
>  View this message in context: 
> http://www.nabble.com/T5%3A-5.0.10-new-features-tp15528824p15712557.html
>
>
> Sent from the Tapestry - User mailing list archive at Nabble.com.
>
>
>  ---------------------------------------------------------------------
>  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