[jsr-314-open-mirror] [jsr-314-open] Use a Renderer on a composite component

Ed Burns edward.burns at oracle.com
Mon Mar 29 10:27:42 EDT 2010


>>>>> On Sun, 28 Mar 2010 21:21:10 -0500, Leonardo Uribe <lu4242 at gmail.com> said:

LU> The problem is why it is mandatory to set "javax.faces.Composite" as
LU> renderer type. The javadoc should say:

LU> "...If the renderer type is not set (return null), Call
LU> UIComponent.setRendererType(java.lang.String)<file:///D:/jdk-1_5_0-doc/jsf20/mojarra-2.0.3-SNAPSHOT/docs/javadocs/javax/faces/component/UIComponent.html#setRendererType%28java.lang.String%29>on
LU> the
LU> UIComponent instance, passing "javax.faces.Composite" as the argument...".
LU> In that case, a user can override the rendererType on the constructor and
LU> avoid this hack that works with the current spec:

I understand the problem you have uncovered.  Take a look at the
renderkit docs for javax.faces.NamingContainer/javax.faces.Composite.
There are specific requirements in there that depend on the composite
component metadata specification.

I thought it would be toooooooo subtle to allow the Renderer to be
customized beause this contract must also be followed in the custom
renderer case.

LU> Why override the default Renderer and use a custom one? Let's
LU> suppose the component proposed needs some custom code for converter,
LU> or for decode. The right place to put that kind of code is the
LU> Renderer class, not the component, but note it is possible to put
LU> that on the component class.

Yes I understand that the Renderer is the right place for such things
but the chosen programming model for customization of composite
components is to override the top level component.  Simple.  If we're
going to change that I need a more compelling reason than correctness.

Ed

-- 
| edward.burns at oracle.com  | office: 408 884 9519 OR x31640
| homepage:                | http://ridingthecrest.com/



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