Notice this quote in the blog entry:

"found out that Tapestry, while loading the page and resolving
components, reads the declaration and template for every component not
already loaded. It resolves components in this way as it encounters
them in the page and component definitions and any recursive reference
to the component while it is being loaded causes the template and
specification to be loaded again, since the component is not yet
loaded! This results in an eventual Stack overflow or out of memory
exception as Tapestry stacks up loading of the same component over and
over again."

That is the root cause of your problem.  When Tapestry validates the
page template, it recursively resolves the components in the page.  If
it hits a recursive component, it will indefinitely resolve that
component, and eventually cause a stack overflow.  It can not evaluate
the conditionals in your component that would normally stop it from
recursing.  As far as I know, it still works this way in 4.x.

Mark

On 5/24/05, pepone pepone <[EMAIL PROTECTED]> wrote:
> Hello
> 
> why tapestry don't suport recursivity? i know that recursivity is not
> imprescindible but many times is the siplest solution.
> 
> I read the TreeIterator that Viktor coments but i think that this a
> lot of extra code to write and like tapestry is about simplify thinks
> i don't want to use this aproach
> 
> I read too the article in
> http://www.behindthesite.com/blog/C1931765677/E923478269/index.html
> but i can understand how to apply it to my problem.  any ideas?
> 
> is this behavior changuing in 4.x if yes i intersting in switch to 4.x now
> 
> Thanks to all tapestry comunity
> 
> On 5/24/05, Viktor Szathmary <[EMAIL PROTECTED]> wrote:
> > Most likely, you don't really need recursive components. Try unrolling
> > your hierarchical calls to an iterator, or use a component like the
> > tacos:Tree (http://tacos.sf.net/).
> >
> > Even if the tree component doesn't work for you, tacos has a
> > TreeIterator that you can use to do hierarchical iteration (while
> > tracking depth).. See the source:
> >
> > http://cvs.sourceforge.net/viewcvs.py/tacos/tacos/src/net/sf/tacos/tree/TreeIterator.java?rev=1.2&view=auto
> >
> >   viktor
> >
> > On 5/23/05, pepone pepone <[EMAIL PROTECTED]> wrote:
> > >  can any body say me if recursive components are suported in 4.x
> > >
> > > On 5/23/05, Mark Dillon <[EMAIL PROTECTED]> wrote:
> > > > Recursive components are not supported in Tapestry 3.x.  Here's an
> > > > explanation and a potential solution:
> > > >
> > > > http://www.behindthesite.com/blog/C1931765677/E923478269/index.html
> > > >
> > > > Thanks,
> > > > Mark
> > > >
> > > > On 5/23/05, pepone pepone <[EMAIL PROTECTED]> wrote:
> > > > > I have a TreeItem component and i want that if TreeItemModel hasChilds
> > > > > render it in a Foreach component but allways i get a
> > > > > java.lang.StackOverFlow exception
> > > > >
> > > > > here is the component
> > > > >
> > > > > <span jwcid="$content$">
> > > > >         <div class="Label">
> > > > >                 <div jwcid="@Insert" value="ognl:model.getLabel(0)"/>
> > > > >     </div>
> > > > >     <div jwcid="@Conditional" condition="ognl:model.hasChilds()">
> > > > >             <div class="Childs">
> > > > >                <div jwcid="@Foreach" source="ognl:model.iterator" 
> > > > > value="ognl:item">
> > > > >                            <div jwcid="@TreeItemView" 
> > > > > model="ognl:object"/>
> > > > >                 </div>
> > > > >             </div>
> > > > >     </div>
> > > > > </span>
> > > > >
> > > > > ---------------------------------------------------------------------
> > > > > 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]
> > >
> > >
> >
> 
> ---------------------------------------------------------------------
> 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