On Wed, 2009-12-02 at 15:16 -0500, Matt Wringe wrote:
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.
patch for it was added here a few days ago:
https://jira.jboss.org/jira/browse/GTNPORTAL-321
The output of the children is sent to a temporary writer before the head
of the page is rendered. Then the page is rendered normally, except it
uses the output from the writer for the child elements.
> 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
>
_______________________________________________
gatein-dev mailing list
gatein-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/gatein-dev