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

Reply via email to