[jsr-314-open] skip render if PreRenderViewEvent listener flags response as complete

Andy Schwartz andy.schwartz at ORACLE.COM
Thu May 28 16:13:13 EDT 2009


Dan -

Yep, responseComplete() should definitely short circuit out.

Andy

Dan Allen wrote On 5/27/2009 11:53 PM ET:
> Currently the RenderResponsePhase loops on the PreRenderViewEvent 
> until the view ID remains unchanged before and after the listeners are 
> notified. However, there is no check for whether the response has been 
> flagged as complete using FacesContext#responseComplete(). The loop 
> should short-circuit and the render step skipped if one of the 
> listeners invokes this method (the check would remain in the same 
> place, after all listeners are invoked on that pass).
>
> https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=1136
>
> Essentially, a redirect is just as likely as a view ID change in a 
> PreRenderViewEvent listener. This is a critical piece of implementing 
> view actions as an extension. Although, there is one workaround. It's 
> possible to call UIViewRoot#setRendered(false) to prevent the view 
> from being rendered, but that is inconsistent with the standard 
> mechanism, which is to call FacesContext#responseComplete().
>
> -Dan
>
> -- 
> Dan Allen
> Senior Software Engineer, Red Hat | Author of Seam in Action
>
> http://mojavelinux.com
> http://mojavelinux.com/seaminaction
> http://in.relation.to/Bloggers/Dan
>
> NOTE: While I make a strong effort to keep up with my email on a daily
> basis, personal or other work matters can sometimes keep me away
> from my email. If you contact me, but don't hear back for more than a 
> week,
> it is very likely that I am excessively backlogged or the message was
> caught in the spam filters.  Please don't hesitate to resend a message if
> you feel that it did not reach my attention.




More information about the jsr-314-open-mirror mailing list