[ https://issues.apache.org/jira/browse/EXTSCRIPT-36?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12790628#action_12790628 ]
Werner Punz commented on EXTSCRIPT-36: -------------------------------------- Ok I found the issue, it as too much proxying, validators and converters are implicit parts of the component tree attached to the components, if a reloading proxy is created on them it survives exactly one lifecycle. The Lifetime of those artefacts is similar to the components, aka refreshed upon a full tree rebuild. the fix is simple but I am not sure if I can commit it: public Validator createValidator(String s) throws FacesException { weaveDelegate(); Validator retVal = _delegate.createValidator(s); if (WeavingContext.isDynamic(retVal.getClass()) && !Proxy.isProxyClass(retVal.getClass())) { retVal = (Validator) reloadInstance(retVal, ScriptingConst.ARTEFACT_TYPE_VALIDATOR); } return retVal; } I will fix it on the code, but I am not sure if I manage a commit today due to private circumstances (first birthday of my son) Give it simply a try and remember the validator is refreshed only if you do a full tree rebuild, the same applies to components as well! This is a limitation imposed by JSF and unless we do dynamic class rewriting on those artefacts this cannot be changed! > NPE in when clicking button in myfaces 1.2 example > -------------------------------------------------- > > Key: EXTSCRIPT-36 > URL: https://issues.apache.org/jira/browse/EXTSCRIPT-36 > Project: MyFaces Extensions Scripting > Issue Type: Bug > Reporter: Jan-Kees van Andel > Assignee: Werner Punz > > When I enter some data in the upper input field in the MF 1.2 example, I get > the following NPE: > javax.faces.FacesException: Exception while validating component with path : > {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: > /helloWorld.xhtml][Class: javax.faces.component.html.HtmlForm,Id: > form][Class: javax.faces.component.html.HtmlPanelGrid,Id: grid][Class: > javax.faces.component.html.HtmlInputText,Id: input1]} > at javax.faces.component.UIInput.validate(UIInput.java:421) > at javax.faces.component.UIInput.processValidators(UIInput.java:186) > at > javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:726) > at javax.faces.component.UIForm.processValidators(UIForm.java:82) > at > javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:726) > at javax.faces.component.UIViewRoot.access$101(UIViewRoot.java:62) > at javax.faces.component.UIViewRoot$2.process(UIViewRoot.java:133) > at javax.faces.component.UIViewRoot.process(UIViewRoot.java:260) > at > javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:129) > at > org.apache.myfaces.lifecycle.ProcessValidationsExecutor.execute(ProcessValidationsExecutor.java:32) > at > org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:103) > at > org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:76) > at > org.apache.myfaces.scripting.jsf.dynamicdecorators.implemetations.LifefcycleProxy.execute(LifefcycleProxy.java:60) > at javax.faces.webapp.FacesServlet.service(FacesServlet.java:178) > at > org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:491) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1074) > at > org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1065) > at > org.apache.myfaces.scripting.servlet.ScriptingServletFilter.doFilter(ScriptingServletFilter.java:48) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1065) > at > org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365) > at > org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:185) > at > org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) > at > org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:689) > at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:391) > at > org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:146) > at > org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) > at > org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139) > at org.mortbay.jetty.Server.handle(Server.java:285) > at > org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:457) > at > org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:765) > at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:628) > at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:209) > at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:357) > at > org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:329) > at > org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475) > Caused by: java.lang.NullPointerException > at > org.apache.myfaces.scripting.core.CoreWeaver.reloadScriptingClass(CoreWeaver.java:70) > at > org.apache.myfaces.scripting.core.MethodLevelReloadingHandler.reloadInvoke(MethodLevelReloadingHandler.java:87) > at > org.apache.myfaces.scripting.core.MethodLevelReloadingHandler.invoke(MethodLevelReloadingHandler.java:65) > at $Proxy6.validate(Unknown Source) > at > javax.faces.component._ComponentUtils.callValidators(_ComponentUtils.java:159) > at javax.faces.component.UIInput.validateValue(UIInput.java:357) > at javax.faces.component.UIInput.validate(UIInput.java:405) > ... 35 more > The debugger says that aclass is null. > Since this statement is only for debugging, I assume the quick fix is simple. > Don't know the impact on the rest of the codebase... -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.