UISelect*** only renders in encodeEnd(FacesContext, UIComponent)
----------------------------------------------------------------

         Key: MYFACES-658
         URL: http://issues.apache.org/jira/browse/MYFACES-658
     Project: MyFaces
        Type: Improvement
  Components: Implementation  
    Versions: 1.1.0    
    Reporter: Thomas Timbul


I have written a ForEach component that is aimed to mirror jstl forEach 
capabilities. It works for pretty much all nested components, but specifically 
not for any SelectOne, SelectMany, ...

There are (as far as I can tell) 2 major reasons for this:

1. The renderer (HtmlMenuRendererBase) renders the menu only in its encodeEnd, 
and it means that any attempt to encode children (forEach) is foiled as the 
call is never delegated. Really, the menu should be encoded in the 
encodeChildren method (if only for consistency).

2. and this one is linked to the above: The menu is rendered outside of the 
normal cycle. By this I mean that the menu renders itself and any children. 
Ideally, the menu would render only the <select></select> frame (encodeBegin 
and encodeEnd) and leave the selectItem creation to a separate renderer. This 
would allow me (in this case) to let my forEach renderer take care of child 
creation.

Existing code can be easily reused as HtmlRendererUtils.internalRenderSelect 
renders SelectItemS perfectly without the need for the containing menu to be 
visible (except maybe for ID creation)

Unfortunately I do not know what impact this kind of change may have on the 
rest of the lifecycle, but my guess is 'none', since only the encoding will 
differ and the ForEach component (or similar flow control) would not render 
visibly and does not have an ID.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to