There is no recursion available for template, and one of the most common use case of recursion is tree structure traversal.
it would be great if the core component library include a Tree component.
I have an example tree component here :
And an example of use :
Basically, the component take a DefaultMutableTreeNode as parameter and print it in a preorder traversal, and one can specify a (unique) html element as a level separator. But this component remains really simple and limited.
Moreover, as I'm a beginner with Tapestry, it could be totally not idiomatic of the framework use (I try to base my implementation on "loop" component).
But it handles the most important functional requirement I want to see for this component.
So, that is my (very basic) "wish list" for a tree component :
- the component traverse a Tree given in parameter
- DefaultMutableTreeNode may be used for the Java representation for the tree ;
- let the possibility to configure the traversal order, preorder is a good default ;
- each iteration gives access to the current node ;
- the body render for each ieration is free (as in loop) ;
- "level" can be decorated (a tag or list of tag open before the level, closed after) ;
There is surely others things to add
hope it will gives you other ideas !