Something like this can be handled using parameter blocks.
See the source of equanda-tapestry5 which includes a Tab component.
Kind regards,
Joachim
David Marquis wrote:
Hi,
He's having the same problem I had some time ago.
Suppose I want to create a Tab Component and I want to be able to
define it like this in the templates:
<t:tabs t:id="myTabs">
<t:tab t:id="tabOne" title="First tab">
<h1>Body of tab1</h1>
<p>Continuing body...</p>
</t:tab>
<t:tab t:id="tabTwo" title="Second tab">
<h1>Body of tab2</h1>
<p>Continuing body...</p>
</t:tab>
</t:tabs>
If would then like to 'render' this about that way:
<div class="tabs">
<ul class="tabTitles">
<li><a href="." onclick="switchtabs(1);">First tab</li>
<li><a href="." onclick="switchtabs(2);">Second tab</li>
</ul>
<div id="tabOne" class="tab selected">
<h1>Body of tab1</h1>
<p>Continuing body...</p>
</div>
<div id="tabTwo" class="tab">
<h1>Body of tab2</h1>
<p>Continuing body...</p>
</div>
</div>
This is, I think, the most natural way of expressing tabs.
But such a thing is not possible, because the Tabs component cannot
accessing its child Tag components dynamically.
More: if you provide a body for a component (like above), you cannot
provide a template for this same component.
I haven't found a way to implement such a component, and I think I had
about the same initial problem as Christopher : A component cannot
easily access its 'children' defined in the base template, build an
internal model from that, and render using this model and an internal
template.
--
David
On 11-Mar-08, at 6:57 AM, Davor Hrg wrote:
explain what are zou trzing to achieve, maybe we can offer a different
approach..
Davor Hrg
On Tue, Mar 11, 2008 at 10:33 AM, Cordenier Christophe
<[EMAIL PROTECTED]> wrote:
Thank you for your answer,
But actually my component must access its child in a dynamic way.
It will be used in different context for analysis purpose.
I've been searching for different ways to access a component body.
For exemple, by using "nestedId" at creation time by decorating the
PageElementFactory to identify if a component is contained in my
component, but the nestedId does not contain the id of the parent
component but is only suffixed to the container nested id.
By decorating ComponentPageElement and intercepting "addToBody"
method call for my component only, but it was not enough for the
children and I don't want to generalize the use of these kind of
hooks or wrapping mechanism because of the "internal" aspect of the
PageElementFactory and ComponentPageElement classes.
Best regards,
Christophe.
-----Message d'origine-----
De : Davor Hrg [mailto:[EMAIL PROTECTED]
Envoyé : mardi 11 mars 2008 10:08
À : Tapestry users
Objet : Re: T5 : How to access to a Component Body ?
you can not access child components geenricaly,
but you can access blocks by id.
you can embed components
@Component TextField name; //component's class is decided here
and in template simply put:
<div t:id="name"/>
but to access a textfield as Field you can:
@InjectComponent private Field name;
and then component's class is resolved from the template
so in the template you must put:
<t:textfield id="name"/>
you can not use it like this:
@Component private Field name;
and in template
<t:textfield id="name"/>
Davor Hrg
On Tue, Mar 11, 2008 at 9:25 AM, Cordenier Christophe
<[EMAIL PROTECTED]> wrote:
Hello,
I'm currently working on a component that needs to access the
content of its body to extract informations like parameters, or
persistent variable used by the components declared in its body.
Actually, the ComponentResources class allows me to access the
container of a component, but it appears that a child is not
"contained in" the component.
This should have helped me from a down-top view.
And I didn't find any method to access the body of a component.
Does anyone knows a way to access the children of a component ?
Best Regards,
Christophe Cordenier.
Ce message et les pi?ces jointes sont confidentiels et r?serv?s ?
l'usage exclusif de ses destinataires. Il peut ?galement ?tre
prot?g? par le secret professionnel. Si vous recevez ce message par
erreur, merci d'en avertir imm?diatement l'exp?diteur et de le
d?truire. L'int?grit? du message ne pouvant ?tre assur?e sur
Internet, la responsabilit? du groupe Atos Origin ne pourra ?tre
recherch?e quant au contenu de ce message. Bien que les meilleurs
efforts soient faits pour maintenir cette transmission exempte de
tout virus, l'exp?diteur ne donne aucune garantie ? cet ?gard et sa
responsabilit? ne saurait ?tre recherch?e pour tout dommage
r?sultant d'un virus transmis.
This e-mail and the documents attached are confidential and
intended solely for the addressee; it may also be privileged. If
you receive this e-mail in error, please notify the sender
immediately and destroy it. As its integrity cannot be secured on
the Internet, the Atos Origin group liability cannot be triggered
for the message content. Although the sender endeavours to maintain
a computer virus-free network, the sender does not warrant that
this transmission is virus-free and will not be liable for any
damages resulting from any virus transmitted.
---------------------------------------------------------------------
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]
Ce message et les pièces jointes sont confidentiels et réservés à
l'usage exclusif de ses destinataires. Il peut également être
protégé par le secret professionnel. Si vous recevez ce message par
erreur, merci d'en avertir immédiatement l'expéditeur et de le
détruire. L'intégrité du message ne pouvant être assurée sur
Internet, la responsabilité du groupe Atos Origin ne pourra être
recherchée quant au contenu de ce message. Bien que les meilleurs
efforts soient faits pour maintenir cette transmission exempte de
tout virus, l'expéditeur ne donne aucune garantie à cet égard et sa
responsabilité ne saurait être recherchée pour tout dommage
résultant d'un virus transmis.
This e-mail and the documents attached are confidential and intended
solely for the addressee; it may also be privileged. If you receive
this e-mail in error, please notify the sender immediately and
destroy it. As its integrity cannot be secured on the Internet, the
Atos Origin group liability cannot be triggered for the message
content. Although the sender endeavours to maintain a computer
virus-free network, the sender does not warrant that this
transmission is virus-free and will not be liable for any damages
resulting from any virus transmitted.
---------------------------------------------------------------------
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]
--
Joachim Van der Auwera
PROGS bvba, progs.be
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]