Hi
Issue created:
https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=807
best regards,
Leonardo
2010/5/25 Leonardo Uribe <lu4242(a)gmail.com>
Hi
Reviewing some stuff, it was notice that the FacesContext instance is not
passed when event processing occur, so every time a system event should be
processed, a call to FacesContext.getCurrentInstance() should be done in
almost all cases.
Below there are one example based on myfaces code (removed non relevant
code):
public class HtmlStylesheetRenderer extends Renderer implements
ComponentSystemEventListener
{
public void processEvent(ComponentSystemEvent event)
{
UIComponent component = event.getComponent();
FacesContext facesContext = FacesContext.getCurrentInstance();
facesContext.getViewRoot().addComponentResource(facesContext,
component, "head");
}
......
}
It could be good to pass the current facesContext (note the code in
Application.publishEvent receive it as param), to prevent those unnecessary
calls and enhance code performance. In theory it is possible to cache
facesContext object on listeners suscribed using
UIViewRoot.subscribeToViewEvent() because those listeners are not saved (but
maybe not because if the same view is used on portlet....), but that's not
possible on ComponentSystemEventListener instances.
I'll open an issue for this one.
regards,
Leonardo Uribe