myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From it-media.k...@daimler.com
Subject Re: Re: Regression between myfaces-extval-core and primefaces: System-Event-Listeners are called too late.
Date Fri, 07 Dec 2012 05:53:37 GMT
Hello Gerhard,

I will do so. I tried a very simple example just yet, but this does not 
show the issue. I've a feeling that I need to add at last some bean 
validation annotations to a used bean in the view to trigger the extval 
proxy to do its work. My assumtion is that extval tries to parse the page 
to include maybe client side validation parts and does so before any 
system event handlers have been initialized.

I'll head back to you with a link for an example.

Just because I'm curious, is there a configuration option to temporarily 
disable any client side validation?

Best regards,

Heiko




gerhard.petracek@gmail.com 
06.12.2012 10:47
Bitte antworten an
dev@myfaces.apache.org


An
dev@myfaces.apache.org
Kopie

Thema
Re: Regression between myfaces-extval-core and primefaces: 
System-Event-Listeners are called too late.






hi heiko,

it would be great if you can provide a link to a small example which 
illustrates the issue.

regards,
gerhard

http://www.irian.at

Your JSF/JavaEE powerhouse -
JavaEE Consulting, Development and
Courses in English and German

Professional Support for Apache MyFaces



2012/12/6 <it-media.kopp@daimler.com>

Hello,

We have come across an issue that occurs in the combination of 
myfaces-extval and primefaces.

We use the following configuration:

myfaces-extcdi-bundle-jsf20 (1.0.6)
myfaces-extval-core (2.0.6)
myfaces-extval-bean-validation (2.0.6)
myfaces-extval-property-validation (2.0.6)
primefaces-3.5 (revision 8433)

The new primefaces uses a JSF System-Event-Listener to register a widget 
builder in the context. 

<system-event-listener>
    <source-class>javax.faces.component.UIViewRoot</source-class>
    
<system-event-class>javax.faces.event.PreRenderViewEvent</system-event-class>
    
<system-event-listener-class>org.primefaces.webapp.PreRenderViewListener</system-event-listener-class>
</system-event-listener> 

with the following content:

public class PreRenderViewListener implements SystemEventListener {
    public boolean isListenerForSource(Object source) {
        return true;
    }

    public void processEvent(SystemEvent event) throws 
AbortProcessingException {
        
FacesContext.getCurrentInstance().getAttributes().put(Constants.WIDGET_BUILDER_ATTR, 
new WidgetBuilder());
    }
}

However, this system event listener seems to be called too late, as the 
ExtValLazyRendererProxy tries to encode components first. This leads to an 
exception at application start:

java.lang.NullPointerException
at 
org.primefaces.component.dialog.DialogRenderer.encodeScript(DialogRenderer.java:51)
at 
org.primefaces.component.dialog.DialogRenderer.encodeEnd(DialogRenderer.java:43)
at 
org.apache.myfaces.extensions.validator.core.renderkit.ExtValLazyRendererProxy.encodeEnd(ExtValLazyRendererProxy.java:76)
at 
org.apache.myfaces.extensions.validator.core.renderkit.ExtValRendererWrapper.encodeEnd(ExtValRendererWrapper.java:358)
at 
javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:535)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:626)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:622)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:622)
at 
org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.renderView(FaceletViewDeclarationLanguage.java:1320)
at 
org.apache.myfaces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:263)
at 
javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:59)
at 
javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:59)
at 
org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:85)


Primefaces rejected this an an error in their code. Is there a way that 
within myfaces-extval-core, it can be made sure that system event 
listeners are called before the lazy renderer starts its work?

Thank you very much for your help,

Best regards,

Heiko

If you are not the intended addressee, please inform us immediately that 
you have received this e-mail in error, and delete it. We thank you for 
your cooperation. 



If you are not the intended addressee, please inform us immediately that you have received
this e-mail in error, and delete it. We thank you for your cooperation.  
Mime
View raw message