On Mon, Oct 12, 2009 at 10:42 AM, Antonio Petrelli
<[email protected]> wrote:
>
> 2009/10/12 Johannes Kuhs <[email protected]>
>
> > I was wondering if there is a way to inherit the value of an attribute and
> > to extend it with new content. Basically, I’m looking for something like
> > inherit=”true” for list-attributes but for normal attributes.
> >
> > Following is a quick example of what I would like to do:
> >
> > Initialization in /WEB-INF/tiles-defs.xml:
> >
> > <definition name=" test.definition" template="/layouts/classic.jsp">
> >    <put-attribute name="title" value="Initial title value" />
> > </definition>
> >
> > Inherit and extend in /test.jsp, note inherit=”true” in the <putAttribute>
> > tag (which does not work but I think it shows what I want to achieve):
> >
> > <tiles:insertDefinition name="test.definition">
> >  <tiles:putAttribute name="title" inherit=”true”>
> >      --This text gets appended to the initial value of the title attribute
> >  </tiles:putAttribute>
> > </tiles:insertDefinition>
> >
> > Now, when inserting the attribute with the following code:
> >
> > <tiles:insertAttribute name="title"/>
> >
> > The following title should be displayed:
> > Initial title value--This text gets appended to the initial value of the
> > title attribute
> >
>
>
> You can do it with a preparer. For example, add an "auxiliar" attribute in
> which you put the text to add, something like:
>
> <tiles:insertDefinition name="test.definition"
> preparer="my.package.MyPreparer">
>  <tiles:putAttribute name="title-aux">
>     --This text gets appended to the initial value of the title attribute
>  </tiles:putAttribute>
> </tiles:insertDefinition>
>
> And in your preparer:
>
> public void execute(TilesRequestContext tilesContext,
>            AttributeContext attributeContext) {
>        String auxValue =
> attributeContext.getAttribute("title-aux").getValue().toString();
>        String originalTitle =
> attributeContext.getAttribute("title").getValue().toString();
>        attributeContext.putAttribute("title", new Attribute(originalTitle +
> auxValue, null);
>    }
>
> HTH
> Antonio

Thanks for your reply, Antonio! I guess the preparer solution would
work but I would have to create a new preparer for every attribute
that I want to inherit/extend. Is there a way to have a general
preparer that I pass the attribute in question and the value to append
to?

Thanks,
John

Reply via email to