You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Viktor Szathmary <ph...@gmail.com> on 2005/03/31 18:06:22 UTC

need advice on partial page rendering

hi,

i'm hacking on support for partial page rendition with XMLHttpRequest
(I don't like the name Ajax much :) I ran into an issue that i'll try
to explain below - I'm looking for advice from people familiar with
the guts of Tapestry (esp. rendering lifecycle).

The idea is to make a more-or-less transparent, easy-to-add-in way of
making pages more dynamic: take advantage of the existing server-side
markup rendering/state management that Tapestry provides, but only
transfer the relevant section of the generated markup that the client
can dynamically substitute in the DOM tree.

I won't go into the entire lifecycle now, but here's the issue: during
page rendition I want to obtain the markup output only *within* a
certain component (that's deep in the page somewhere). My initial
thought was to use the ResponseOutputStream discard option: in my
Service, i start with setDiscard(true), invoke renderPage(...) and
when I get to the relevant component, I setDiscard(false) and set
discard again on end-of-component-render...

This would work fine in theory, but since there's some sort of
buffering going on (due to Body component?) things are not written
directly to the ResponseOutputStream, rather in one chunk at the
end... so my questions are:

1. is there a way to avoid this buffering (the answer seems to be
'no', but it's always best to ask :)

2. what would be the most cost effective way of obtain a portion of
the page markup? best would be to disable actual markup generation
outside the relevant section. do i need some wrapper component (like
Body) that does it's own buffering with a special MarkupWriter?

any insight appreciated...

thanks,
  viktor

---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-user-help@jakarta.apache.org