Perhaps this diagram will help to debug http://tapestry.apache.org/component-rendering.html
On Monday, 2 April 2012, Chris Mylonas <ch...@opencsta.org> wrote: > Hi Tapestry List, > > After spending a few hours with render phases and all that comes with it (heartbeat/resources) I'm in a bit of a jam that I don't know where to go next. > I'm setting up a basic component called PhoneView that receives an ArrayList of Phone objects...similar to the Tree example on the wiki [1] > > @CleanupRender & @BeforeRenderBody have the same code to make it easy for the beginner (me!) to see his progress... > There are 2 items in the array list I have created using a BeanEditForm, so I presume I should see three lots of the div saying "CHRIS! This is your amazing test div - " with the render phase name. (2 x BeforeRenderBody) + (1 x CleanupRender). > > I'm not :( > > Running your eye over this code/template...can you help me? > > > /** > * Defines the source of the phones > */ > @Parameter(required = true) > private ArrayList<Phone> source ; > > /** > * Iterator to go over the source (Phone) elements > */ > private Iterator<Phone> iterator; > > /** > * > */ > @Inject > private ComponentResources resources ; > > /** > * > */ > @Parameter > private Phone currentPhone ; > > /** > * > */ > @Parameter(defaultPrefix = BindingConstants.LITERAL) > private Block empty; > > /** > * > */ > @Environmental > private Heartbeat heartbeat ; > > /** > * @return > */ > @SetupRender > boolean SetupRender(){ > if( source == null ){ > return false ; > } > this.iterator = source.iterator(); > return (iterator.hasNext()); > } > > @BeginRender > void beginRender(){ > currentPhone = iterator.next(); > heartbeat.begin(); > } > > @BeforeRenderBody > void beforeRenderBody(MarkupWriter writer){ > > Element cur = writer.element("div", > "class","userbackground").addClassName("adifferentbackground"); > cur.text("CHRIS! This is your amazing test div - beforeRenderBody"); > writer.end(); > > > resources.renderInformalParameters(writer); > } > /** > * @return > */ > @AfterRender > boolean afterRender(){ > heartbeat.end(); > return (!iterator.hasNext()); > } > > /** > * @param writer > */ > @CleanupRender > void cleanupRender(MarkupWriter writer){ > Element cur = writer.element("div", > "class","userbackground").addClassName("adifferentbackground"); > cur.text("CHRIS! This is your amazing test div - cleanupRender"); > writer.end(); > } > > > And the tml snippet from Index.tml > > <t:grid source="phones"/> > <br/> > <t:pagelink page="Phone/Create">Add Phone</t:pagelink> > <br/> > Chris 1 > <br/> > <t:PhoneView source="phones"/> > <br/> > Chris 2 > > > > Thanks > Chris > > > > [1] = https://wiki.apache.org/tapestry/Tapestry5HowToCreateYourOwnComponents