On Mon, Aug 29, 2011 at 1:49 PM, Antonio Petrelli <
[email protected]> wrote:

> 2011/8/29 Rick R <[email protected]>
>
> > On Mon, Aug 29, 2011 at 1:38 PM, Rick R <[email protected]> wrote:
> >
> > >
> > >
> > > On Mon, Aug 29, 2011 at 1:35 PM, Antonio Petrelli <
> > > [email protected]> wrote:
> > >
> > >>
> > >> >
> > >> > Oh, I see something like this maybe (which works, although
> definitely
> > >> more
> > >> > verbose):
> > >> >
> > >> > <definition name="signup" extends="base.definition">
> > >> >  <put-attribute name="pageBody">
> > >> > <definition templateExpression="/WEB-INF/layouts/plainBody.jsp">
> > >> >  <put-attribute name="content"
> > >> value="/WEB-INF/views/signup/signup.jsp"/>
> > >> > </definition>
> > >> >  </put-attribute>
> > >> > </definition>
> > >> >
> > >>
> > >> It's not verbose, it's right.
> > >>
> > >>
> > >
> > >
> > > Ok so should that be preferred over using 'cascade=true' (which I'm
> > > thinking your suggesting it is.)
> > >
> > > I got that above down to a little more clear with the following (used
> > > extends on pageBody to plain.body so that template definition could be
> > > defined in a more common place.)
> > >
> > > <definition name="signup" extends="base.definition">
> > > <put-attribute name="pageBody">
> > >  <definition extends="plain.body">
> > > <put-attribute name="content"
> value="/WEB-INF/views/signup/signup.jsp"/>
> > >  </definition>
> > > </put-attribute>
> > > </definition>
> > >
> > >
> >
> > It is more verbose though but I prefer to do what is 'right' and won't
> get
> > me into trouble later. But here are the two side by side:
> >
> > BEFORE using cascade, most page definitions using the plain layout would
> > look like:
> >
> > <definition name="signup" extends="plainLayout">
> > <put-attribute name="content" value="/WEB-INF/views/signup/signup.jsp"
> > cascade="true"/>
> > </definition>
> >
> >
> > NOT using cascade and the nested definition:
> >
> > <definition name="signup" extends="base.definition">
> >  <put-attribute name="pageBody">
> > <definition extends="plain.body">
> >  <put-attribute name="content" value="/WEB-INF/views/signup/signup.jsp"/>
> > </definition>
> >  </put-attribute>
> > </definition>
> >
>
> There is no "right" thing to do. Cascade attributes have one problem: they
> are cascaded to every nested definition. This way you cannot have two
> sibling nested definitions that share the same attribute names. However, if
> it is not your case, cascade attributes allow an easier to read XML file.
>
> My suggestion is to *use cascade attributes* and use anonymous nested
> definitions to override any attributes with the same names as the cascaded
> ones, if you have this case.
>
> Antonio
>

Thanks you helped a lot!

-- 
Rick R

Reply via email to