Dan Adams wrote:
> Every once in a while I'll need to do some recursive rendering. Does
> anyone know of a simple example of this using @Block?

We do it that way. This renders tree-like, no folding though, recursive
structure of report groups containing other report groups (which are
compound nodes) and reports (leafs). Root group is given as a parameter,
but it may be as well page property with initial value set to sth. You
also need some exit condition, which in this case is size of
reportGroups property.

Note that the group property is updated in the second loop so that the
recursive call to "groupBlock" could render its children properly.

Some styling has been removed for a sake of readability:

*<HTML template>*
<span jwcid="@RenderBlock" block="ognl:components.groupBlock"/>

<block jwcid="[EMAIL PROTECTED]" >
  <!-- current group name -->
  <span jwcid="@Insert" value="ognl:group.name" />
        
  <!-- list of children reports) -->
  <loop jwcid="@Foreach" source="ognl:group.reports"
        value="ognl:report" element="ul">
                                        
    <li><span jwcid="@Insert" value="ognl:report.name" /></li>
  </loop>

  <!-- render recursively child groups -->      
  <condition jwcid="@Conditional"
condition="ognl:group.reportGroups.size() > 0">
    <loop jwcid="@Foreach" source="ognl:group.reportGroups"
value="ognl:group" >
        <span jwcid="@RenderBlock" block="ognl:components.groupBlock"/>
    </loop>
 </condition>

</block>


*<JWCID>*
<component-specification class="org.apache.tapestry.BaseComponent"
    allow-body="no" allow-informal-parameters="no">

    <parameter name="group" type="YYY"
        required="yes"
        direction="auto"
    />

    <property-specification name="report" type="XXX"/>

</component-specification>


best regards,
Bernard

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to