Details
Description
We've implemented our own Message Renderer and Messages Renderer, so that the output will always be wrapped in a div, to better work with our dom differencing. As part of the MyFaces 2 integration in ICE-5868 we switched from using the faces-context.xml to override the renderers to doing it programmatically, since our renderers override the Mojarra ones, and we can't use them with MyFaces. This has the side-effect of thwarting applications from overriding the renderers themselves.
The quickest fix would be to change the renderkit code that checks to see if we should override the renderers to do an exact class name check for the Mojarra renderers, so that we don't stomp on 3rd party renderers.
The quickest fix would be to change the renderkit code that checks to see if we should override the renderers to do an exact class name check for the Mojarra renderers, so that we don't stomp on 3rd party renderers.
Order of registering renderers is: @FacesRenderer(), JSF, faces-config.xml. See screenshot 1.
Therefore, declaration in @FacesRenderer() will be replaced by JSF declaration if renderer type id is the same. Therefore, must use faces-config.xml.
Or, we can make (component family id + renderer type id) unique. However, because they are set in the component class (javax.faces.component.html.HtmlMessages), this is impossible without overriding the component class.