You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Janko Muzykant <um...@googlemail.com> on 2007/05/25 13:46:58 UTC

T5 selective rendering

hi all,
is anyone able to give me a hint how could I render only one component from
whole the tree of all components that given page consists of? I did such a
thing a few month ago for T4 and it worked exactly like this:
* there was a Border component wrapping all the children
* there was a special component (let's name it @AjaxContainer)
* in case a special id was found in session/request, @Border was replacing
current MarkupWriter with NullMarkupWriter and passed the control down to
the children.
* every component which was not an @AjaxContainer was obviously not rendered
in such a case
* @AjaxContainer was rendering its contents using original MarkupWriter.

as a result i got only contents of my @AjaxContainer.

The question is, how to achieve this functionality in T5? The first problem
for me was lack of NullMarkupWriter, secondly I don't know how to pass
"replaced" writer to the children components. I guess it may be achieved
somehow easier using MarkupWriterFactory, but how?

regards,
umrzyk

Re: T5 selective rendering

Posted by Kristian Marinkovic <kr...@porsche.co.at>.
i did some partial page rendering (PPR) myself ... but i don't
know it is the tapestry 5 way of doing it...

rendering a component from any page....

@Inject
private RequestPageCache _cache;
 
@Inject
private MarkupWriterFactory mwf;
 
@Inject
private PageRenderInitializer initializer;

public Object doPPR() {
        MarkupWriter markupWriter = mwf.newMarkupWriter();
 
        initializer.setup(markupWriter); 
 
        Page page = _cache.get("anypage");
        ComponentPageElement element = 
            page.getRootElement().getEmbeddedElement("anycomponent");
 
        RenderQueueImpl queue = 
            new RenderQueueImpl(page.getLog());
 
        queue.push(element);
        queue.run(markupWriter); 
 
        initializer.cleanup(markupWriter);
 
        return new 
TextStreamResponse("text/html",markupWriter.toString());
}




"Alexandru Dragomir" <al...@gmail.com> 
25.05.2007 19:15
Bitte antworten an
"Tapestry users" <us...@tapestry.apache.org>


An
"Tapestry users" <us...@tapestry.apache.org>
Kopie

Thema
Re: T5 selective rendering






sorry , pressed wrong button:

boolean beginRender() {
    return false;
}

And the doc is here :
http://tapestry.apache.org/tapestry5/tapestry-core/guide/rendering.html



On 5/25/07, Alexandru Dragomir <al...@gmail.com> wrote:
>
> As simple as it can get :
>
> @Inject
> private ComponentResources resources;
>
> Component setupRender() {
>      return resources.getEmbeddedComponent("yourComponent");
> }
>
> boolean beginRender() {
>
> }
>
> On 5/25/07, Janko Muzykant <um...@googlemail.com> wrote:
> >
> > hi all,
> > is anyone able to give me a hint how could I render only one component
> > from
> > whole the tree of all components that given page consists of? I did 
such
> > a
> > thing a few month ago for T4 and it worked exactly like this:
> > * there was a Border component wrapping all the children
> > * there was a special component (let's name it @AjaxContainer)
> > * in case a special id was found in session/request, @Border was
> > replacing
> > current MarkupWriter with NullMarkupWriter and passed the control down
> > to
> > the children.
> > * every component which was not an @AjaxContainer was obviously not
> > rendered
> > in such a case
> > * @AjaxContainer was rendering its contents using original 
MarkupWriter.
> >
> > as a result i got only contents of my @AjaxContainer.
> >
> > The question is, how to achieve this functionality in T5? The first
> > problem
> > for me was lack of NullMarkupWriter, secondly I don't know how to pass
> > "replaced" writer to the children components. I guess it may be 
achieved
> >
> > somehow easier using MarkupWriterFactory, but how?
> >
> > regards,
> > umrzyk
> >
>
>


Re: T5 selective rendering

Posted by Alexandru Dragomir <al...@gmail.com>.
sorry , pressed wrong button:

boolean beginRender() {
    return false;
}

And the doc is here :
http://tapestry.apache.org/tapestry5/tapestry-core/guide/rendering.html



On 5/25/07, Alexandru Dragomir <al...@gmail.com> wrote:
>
> As simple as it can get :
>
> @Inject
> private ComponentResources resources;
>
> Component setupRender() {
>      return resources.getEmbeddedComponent("yourComponent");
> }
>
> boolean beginRender() {
>
> }
>
> On 5/25/07, Janko Muzykant <um...@googlemail.com> wrote:
> >
> > hi all,
> > is anyone able to give me a hint how could I render only one component
> > from
> > whole the tree of all components that given page consists of? I did such
> > a
> > thing a few month ago for T4 and it worked exactly like this:
> > * there was a Border component wrapping all the children
> > * there was a special component (let's name it @AjaxContainer)
> > * in case a special id was found in session/request, @Border was
> > replacing
> > current MarkupWriter with NullMarkupWriter and passed the control down
> > to
> > the children.
> > * every component which was not an @AjaxContainer was obviously not
> > rendered
> > in such a case
> > * @AjaxContainer was rendering its contents using original MarkupWriter.
> >
> > as a result i got only contents of my @AjaxContainer.
> >
> > The question is, how to achieve this functionality in T5? The first
> > problem
> > for me was lack of NullMarkupWriter, secondly I don't know how to pass
> > "replaced" writer to the children components. I guess it may be achieved
> >
> > somehow easier using MarkupWriterFactory, but how?
> >
> > regards,
> > umrzyk
> >
>
>

Re: T5 selective rendering

Posted by Alexandru Dragomir <al...@gmail.com>.
As simple as it can get :

@Inject
private ComponentResources resources;

Component setupRender() {
     return resources.getEmbeddedComponent("yourComponent");
}

boolean beginRender() {

}

On 5/25/07, Janko Muzykant <um...@googlemail.com> wrote:
>
> hi all,
> is anyone able to give me a hint how could I render only one component
> from
> whole the tree of all components that given page consists of? I did such a
> thing a few month ago for T4 and it worked exactly like this:
> * there was a Border component wrapping all the children
> * there was a special component (let's name it @AjaxContainer)
> * in case a special id was found in session/request, @Border was replacing
> current MarkupWriter with NullMarkupWriter and passed the control down to
> the children.
> * every component which was not an @AjaxContainer was obviously not
> rendered
> in such a case
> * @AjaxContainer was rendering its contents using original MarkupWriter.
>
> as a result i got only contents of my @AjaxContainer.
>
> The question is, how to achieve this functionality in T5? The first
> problem
> for me was lack of NullMarkupWriter, secondly I don't know how to pass
> "replaced" writer to the children components. I guess it may be achieved
> somehow easier using MarkupWriterFactory, but how?
>
> regards,
> umrzyk
>