On Wed, 2009-12-02 at 20:31 +0100, Julien Viet wrote:
Have you studied the possibility to make the ui component
UIPortalApplication to buffer the content of its rendered children.
The only way to buffer the children it to create a temporary writer and
have the children write their content to that. The children by default
will try to write directly to the response writer. This was one of the
options mentioned in my last email.
I already have something almost finished that will do this.
When the rendering is terminated the UIPortalApplication component
can
do two things:
1/ setup the HTTP headers (if we do support it)
2/ update its state to store the headers and then have them pulled by
the template UIPortalApplication.gtmpl
The control flow could be modified to follow:
1/ called process render on its children and buffer the byte array
response
2/ update its state with the buffered response and the headers
3/ output HTTP headers
4/ call render template to render the UIPortalApplication.gtmpl
5/ in the uicomponent.renderChildren() callback send the buffered
response
6/ in a finally block clear the transient state (buffered response and
headers)
On Dec 2, 2009, at 8:12 PM, Matt Wringe wrote:
> I am trying to get portlet markup headers working with gatein. This
> allows portlets to set content in the html head of the portal page.
> This
> only works if the portlets are processed before the page gets
> generated,
> which is currently not the case.
>
> We can get around this by creating a preRender phase to the webui
> lifecycle. This phase would generate the markup for the uicomponent
> and
> store it. When the processRender phase occurs, it will just retrieve
> this stored markup.
> Adding a new phase to the lifecycle is going to require a bunch of
> changes to webui.
>
> I already have a simple proof of concept with a preRender phase that
> is
> working with portlets to allow setting the html head.
>
> Before I get too far with this, I would to know if anyone else has any
> better ideas about how to handle this.
>
> We could modify the html head using javascript that gets called when
> the
> page is loaded. This will work and would be easy to implement, but
> seems
> like a hack.
>
> I looked into seeing if we could just modify how the
> UIPortalApplication
> gets rendered so that we wouldn't need to touch the rest of the webui
> lifecyle. We could do something like render the html body to a
> temporary
> writer first, but this is a messy hack.
>
> _______________________________________________
> gatein-dev mailing list
> gatein-dev(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/gatein-dev