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]

Reply via email to