There is a second issue. There is no event between view encoding and state writing. There really needs to be a hook at each stage.<br><br>Create empty view root<br>&lt;event&gt;*<br>Build component tree<br>&lt;event&gt;**<br>
Render component tree<br>&lt;event&gt;**<br>Save state<br><br>* This is the key point for applications to interact with the view metadata<br>** Listeners can modify the component tree, perhaps to add components dynamically<br>
** Allows the application to modify the state of any component in the tree just before the tree state is written out. Does that seem useful?<br><br>-Dan<br><br><div class="gmail_quote">On Mon, Nov 2, 2009 at 7:17 PM, Dan Allen <span dir="ltr">&lt;<a href="mailto:dan.j.allen@gmail.com">dan.j.allen@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">This has been a problem with Facelets from the start. Facelets has always built and serialized the component tree in one fell swoop. I&#39;ve run into this problem a number of times when trying to add default behavior to a component tree.<br>

<br>Of course, you have the PreRenderViewEvent, which gets called just before the rendering begins, so you have a populated tree at that point. However, any changes to the tree are not recorded by the state saving mechanism (I&#39;d need to verify that).<br>

<br>Perhaps what we need instead is for the state saving to recheck if the component tree state changed by a PreRenderViewEvent listener. (Of course, I think you could do this yourself in one of these listeners, but not the ideal solution).<br>

<br>This brings up an important documentation question. At what point in the lifecycle do we recommend that the application add dynamic elements to the component tree? Some guidance would be helpful.<br><br>-Dan<div><div>
</div><div class="h5"><br><br><div class="gmail_quote">
On Mon, Nov 2, 2009 at 4:52 PM, Ryan Lubke <span dir="ltr">&lt;<a href="mailto:Ryan.Lubke@sun.com" target="_blank">Ryan.Lubke@sun.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

Please see Mojarra-1383 [1] for background on this issue.<br>
<br>
Based on this, it seems we would need to remove the last bullet item in this section that states:<br>
<br>
   &quot;Publish an PostAddToViewEvent with the created UIViewRoot as the event source.&quot;<br>
<br>
and move the responsibility of publishing this event to ViewDeclarationLanguage.buildView() - the<br>
point when the view is actually populated.<br>
<br>
Thoughts?<br>
<br>
[1] <a href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=1383" target="_blank">https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=1383</a><br>
</blockquote></div><br><br clear="all"><br></div></div><font color="#888888">-- <br>Dan Allen<br>Senior Software Engineer, Red Hat | Author of Seam in Action<br>Registered Linux User #231597<br><br><a href="http://mojavelinux.com" target="_blank">http://mojavelinux.com</a><br>

<a href="http://mojavelinux.com/seaminaction" target="_blank">http://mojavelinux.com/seaminaction</a><br><a href="http://www.google.com/profiles/dan.j.allen" target="_blank">http://www.google.com/profiles/dan.j.allen</a><br>

</font></blockquote></div><br><br clear="all"><br>-- <br>Dan Allen<br>Senior Software Engineer, Red Hat | Author of Seam in Action<br>Registered Linux User #231597<br><br><a href="http://mojavelinux.com">http://mojavelinux.com</a><br>
<a href="http://mojavelinux.com/seaminaction">http://mojavelinux.com/seaminaction</a><br><a href="http://www.google.com/profiles/dan.j.allen">http://www.google.com/profiles/dan.j.allen</a><br>