Return-Path: X-Original-To: apmail-myfaces-users-archive@www.apache.org Delivered-To: apmail-myfaces-users-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 9E256D849 for ; Tue, 18 Dec 2012 00:53:34 +0000 (UTC) Received: (qmail 21998 invoked by uid 500); 18 Dec 2012 00:53:33 -0000 Delivered-To: apmail-myfaces-users-archive@myfaces.apache.org Received: (qmail 21938 invoked by uid 500); 18 Dec 2012 00:53:33 -0000 Mailing-List: contact users-help@myfaces.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "MyFaces Discussion" Delivered-To: mailing list users@myfaces.apache.org Received: (qmail 21929 invoked by uid 99); 18 Dec 2012 00:53:33 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 18 Dec 2012 00:53:33 +0000 X-ASF-Spam-Status: No, hits=-0.5 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of lu4242@gmail.com designates 209.85.220.42 as permitted sender) Received: from [209.85.220.42] (HELO mail-pa0-f42.google.com) (209.85.220.42) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 18 Dec 2012 00:53:27 +0000 Received: by mail-pa0-f42.google.com with SMTP id rl6so117272pac.15 for ; Mon, 17 Dec 2012 16:53:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=EY3qncgAzQ6tAT8fPIUXDKdaH1bG/zprtwaKIH8N8P4=; b=i56DQ3Vti1ddC2iUkzH3xZos0jvOOuZoIDR135mljJjuoB6Cpc1Yko/vIa5AxVlXFP pgHZPNlBFaq33ws3lx8pcaaNnb7y/CE0YYYrJur74TD9aIi70vX1OhzhjyoYgh/GgfyV gY6Mws+wOwOjsVACwYIB4AsfZc1xjipsO/f8EuM+ZOferqiU3Bx1ur8IGcP9KpMqel5D bBvi4dnHmyO7q3JDQFb4K3ML0oGYH+uB2RuRUOML60to1Dqr+Xk2Qe+9v4CKPOm5pvEx dYAAvnEdLE7GGhRyz+H0dLI7nyszXqakym12jzW98t+RpyKn10yn8zGSoW/VXZdcaLuz 7Pfg== MIME-Version: 1.0 Received: by 10.68.213.233 with SMTP id nv9mr555302pbc.155.1355791987018; Mon, 17 Dec 2012 16:53:07 -0800 (PST) Received: by 10.66.220.41 with HTTP; Mon, 17 Dec 2012 16:53:06 -0800 (PST) In-Reply-To: References: Date: Mon, 17 Dec 2012 19:53:06 -0500 Message-ID: Subject: Re: TomEE/MyFaces: EL exception NulPointerException for h:selectOneMenu From: Leonardo Uribe To: MyFaces Discussion Content-Type: text/plain; charset=ISO-8859-1 X-Virus-Checked: Checked by ClamAV on apache.org Hi If @PostConstruct, there is no error in MyFaces or Tomcat. I think the bug is hidden in the application logic. Check the code related to p:ajax. If a component is not executed (do the lifecycle over it) and is rendered, the null could be added without notice. You need to be sure that all the components involved in your logic are executed before render them. regards, Leonardo 2012/12/17 Howard W. Smith, Jr. : > Leonardo, > > I just confirmed the following: > > 1. @PostConstruct, pf_RollingStockController.init() method is called > 2. the h:selectOneMenu (below) is responsible, because the server log > (below) will show that the setter has null as an argument value > > > > itemLabel="#{pf_rollingStockController.selectOneFilterYear}" /> > > listener="#{pf_rollingStockController.prepareList()}" > update=":pageContentPanel"/> > > > > Please note that the test steps do not include/involve clicking the > selectOneMenu, so the filterYear = 0 was not (or should not have been) set > to NULL by PrimeFaces' p:ajax component. So, is MyFaces or TomEE/openejb > responsible for h:selectOneMenu setting the value to NULL? > > server log below: > > > INFO: pf_UsersController.loginUser(): administrator logged in at Mon Dec 17 > 19:19:40 EST 2012 > Dec 17, 2012 7:19:59 PM pf.ApplicationScopeBean log > INFO: pf_RollingStockController.init(): BEFORE filterYear = 0 > Dec 17, 2012 7:19:59 PM pf.ApplicationScopeBean log > INFO: pf_RollingStockController.init(): AFTER filterYear = 0; filterYear > (now) = 0 > Dec 17, 2012 7:20:03 PM javax.faces.component._ExternalSpecifications > isBeanValidationAvailable > INFO: MyFaces Bean Validation support enabled > Dec 17, 2012 7:20:03 PM pf.ApplicationScopeBean log > INFO: pf_RollingStockController.setFilterYear(): argument filterYear = 0; > this.filterYear = 0 > Dec 17, 2012 7:20:03 PM pf.ApplicationScopeBean log > INFO: pf_RollingStockController.setFilterYear(): argument filterYear = > null; this.filterYear = 0 > Dec 17, 2012 7:20:03 PM pf.ApplicationScopeBean log > INFO: pf_RollingStockController.setFilterYear(): argument filterYear = > null; this.filterYear = null > Dec 17, 2012 7:22:20 PM pf.ApplicationScopeBean log > INFO: pf_UsersController.logout(): administrator logged out at Mon Dec 17 > 19:22:20 EST 2012 > > > > On Mon, Dec 17, 2012 at 3:38 PM, Leonardo Uribe wrote: > >> Hi >> >> In my opinion, the stack traces shows that @PostConstruct is not >> called or filterYear is set to null in some other place. >> >> If the container is not calling @PostConstruct, TomEE is the one to >> blame, but first I would check that assumption, using a debugger >> or with a System.out.println(). >> >> regards, >> >> Leonardo Uribe >> >> 2012/12/17 Howard W. Smith, Jr. : >> > Leonardo, >> > >> > Thanks for your response to my previous email where you proposed a fix >> > using MyFaces Commons (mcc taghandler). >> > >> > Now, I'm wondering if this is TomEE or MyFaces. For some reason, >> filterYear >> > (Integer) seems to be NULL when enduser/myself click the following >> > commandButton. >> > >> > > > >> actionListener="#{pf_rollingStockController.prepareList()}" >> > ajax="false"/> >> > >> > >> > Please note the following: >> > >> > 1. web app is composed of CDI-managed-beans, running via TomEE 1.5.1 and >> > MyFaces 2.1.10, and JUEL 2.2.5 >> > 2. the xhtml and bean did not result in exception when I was running >> > Glassfish and JSF-managed-beans (at this time, last year, when this xhtml >> > and bean was in demand) >> > 3. I had to check for NULL in 'getSelectOneFilterYear()' to fix this >> issue. >> > >> > xhtml >> > >> > >> > > > >> > itemLabel="#{pf_rollingStockController.selectOneFilterYear}" /> >> > >> > > > listener="#{pf_rollingStockController.prepareList()}" >> > update=":pageContentPanel"/> >> > >> > >> > >> > bean >> > >> > >> > import javax.inject.Named; >> > import javax.enterprise.context.SessionScoped; >> > >> > @Named("pf_rollingStockController") >> > @SessionScoped >> > public class pf_RollingStockController implements Serializable { >> > >> > private Integer filterYear; >> > >> > @PostConstruct >> > protected void init() { >> > >> > filterYear = 0; >> > >> > } >> > >> > public String getSelectOneFilterYear() { >> > /*** HAD TO ADD THIS TO FIX THE EXCEPTION BELOW ***/ >> > if (filterYear == null) { >> > filterYear = 0; >> > } >> > /*** HAD TO ADD THIS TO FIX THE EXCEPTION BELOW ***/ >> > if (filterYear == 0) >> > return "Select One"; >> > else >> > return "Show All"; >> > } >> > >> > >> > >> > stacktrace in TomEE's log >> > >> > >> > javax.servlet.ServletException: javax.el.ELException: >> > java.lang.NullPointerException >> > at javax.faces.webapp.FacesServlet.service(FacesServlet.java:229) >> > at >> > >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) >> > at >> > >> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) >> > at >> > >> org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79) >> > at >> > >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) >> > at >> > >> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) >> > at >> > >> org.omnifaces.filter.GzipResponseFilter.doFilter(GzipResponseFilter.java:148) >> > at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:75) >> > at >> > >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) >> > at >> > >> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) >> > at pf.LoginFilter.doFilter(LoginFilter.java:204) >> > at >> > >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) >> > at >> > >> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) >> > at >> > >> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) >> > at >> > >> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) >> > at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:45) >> > at >> > >> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) >> > at >> > >> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) >> > at >> > >> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) >> > at >> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) >> > at >> > >> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) >> > at >> > >> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) >> > at >> > >> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) >> > at >> > >> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) >> > at >> > >> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) >> > at >> > >> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) >> > at >> > >> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) >> > at java.lang.Thread.run(Thread.java:722) >> > Caused by: org.apache.myfaces.view.facelets.el.ContextAwareELException: >> > javax.el.ELException: java.lang.NullPointerException >> > at >> > >> org.apache.myfaces.view.facelets.el.ContextAwareTagValueExpression.getValue(ContextAwareTagValueExpression.java:104) >> > at >> javax.faces.component._DeltaStateHelper.eval(_DeltaStateHelper.java:249) >> > at javax.faces.component.UISelectItem.getItemLabel(UISelectItem.java:129) >> > at >> > >> org.apache.myfaces.shared.util.SelectItemsIterator.hasNext(SelectItemsIterator.java:124) >> > at >> > >> org.apache.myfaces.shared.renderkit.RendererUtils.internalGetSelectItemList(RendererUtils.java:798) >> > at >> > >> org.apache.myfaces.shared.renderkit.RendererUtils.getSelectItemList(RendererUtils.java:764) >> > at >> > >> org.apache.myfaces.shared.renderkit.html.HtmlSelectableRendererBase.internalRenderSelect(HtmlSelectableRendererBase.java:74) >> > at >> > >> org.apache.myfaces.shared.renderkit.html.HtmlMenuRendererBase.renderMenu(HtmlMenuRendererBase.java:91) >> > at >> > >> org.apache.myfaces.shared.renderkit.html.HtmlMenuRendererBase.encodeEnd(HtmlMenuRendererBase.java:76) >> > at >> javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:665) >> > at >> javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:545) >> > at >> > >> org.apache.myfaces.shared.renderkit.html.HtmlGridRendererBase.renderChildren(HtmlGridRendererBase.java:370) >> > at >> > >> org.apache.myfaces.shared.renderkit.html.HtmlGridRendererBase.encodeEnd(HtmlGridRendererBase.java:194) >> > at >> javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:665) >> > at >> javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:545) >> > at >> > >> org.primefaces.component.datatable.DataTableRenderer.encodeColumnHeaderContent(DataTableRenderer.java:409) >> > at >> > >> org.primefaces.component.datatable.DataTableRenderer.encodeColumnHeader(DataTableRenderer.java:373) >> > at >> > >> org.primefaces.component.datatable.DataTableRenderer.encodeThead(DataTableRenderer.java:584) >> > at >> > >> org.primefaces.component.datatable.DataTableRenderer.encodeRegularTable(DataTableRenderer.java:213) >> > at >> > >> org.primefaces.component.datatable.DataTableRenderer.encodeMarkup(DataTableRenderer.java:186) >> > at >> > >> org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:79) >> > at >> javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:665) >> > at javax.faces.component.UIData.encodeEnd(UIData.java:1699) >> > at >> org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:62) >> > at >> > >> org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:46) >> > at >> > >> org.primefaces.component.panel.PanelRenderer.encodeContent(PanelRenderer.java:202) >> > at >> > >> org.primefaces.component.panel.PanelRenderer.encodeMarkup(PanelRenderer.java:119) >> > at >> > >> org.primefaces.component.panel.PanelRenderer.encodeEnd(PanelRenderer.java:56) >> > at >> javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:665) >> > at >> org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:62) >> > at >> > >> org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:46) >> > at >> org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:60) >> > at >> > >> org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:46) >> > at >> > >> org.primefaces.component.outputpanel.OutputPanelRenderer.encodeEnd(OutputPanelRenderer.java:46) >> > at >> javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:665) >> > at >> org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:62) >> > at >> > >> org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:46) >> > at >> > >> org.primefaces.extensions.component.layout.LayoutPaneRenderer.encodeBegin(LayoutPaneRenderer.java:141) >> > at >> > >> javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:587) >> > at >> javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:517) >> > at >> javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:541) >> > at >> javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:541) >> > at >> javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:541) >> > at >> > >> org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.renderView(FaceletViewDeclarationLanguage.java:1981) >> > at >> > >> org.apache.myfaces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:285) >> > 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:116) >> > at >> org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:241) >> > at javax.faces.webapp.FacesServlet.service(FacesServlet.java:199) >> > ... 27 more >> > Caused by: javax.el.ELException: java.lang.NullPointerException >> > at javax.el.BeanELResolver.getValue(BeanELResolver.java:307) >> > at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:175) >> > at de.odysseus.el.tree.impl.ast.AstProperty.eval(AstProperty.java:77) >> > at de.odysseus.el.tree.impl.ast.AstEval.eval(AstEval.java:51) >> > at de.odysseus.el.tree.impl.ast.AstNode.getValue(AstNode.java:30) >> > at >> de.odysseus.el.TreeValueExpression.getValue(TreeValueExpression.java:122) >> > at >> > >> org.apache.webbeans.el.WrappedValueExpression.getValue(WrappedValueExpression.java:68) >> > at >> > >> org.apache.myfaces.view.facelets.el.ContextAwareTagValueExpression.getValue(ContextAwareTagValueExpression.java:96) >> > ... 76 more >> > Caused by: java.lang.NullPointerException >> > at >> > >> jsf.rollingStock.pf_RollingStockController.getSelectOneFilterYear(pf_RollingStockController.java:1407) >> > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> > at >> > >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) >> > at >> > >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >> > at java.lang.reflect.Method.invoke(Method.java:601) >> > at >> > >> org.apache.webbeans.intercept.InterceptorHandler.invoke(InterceptorHandler.java:322) >> > at >> > >> org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.invoke(NormalScopedBeanInterceptorHandler.java:117) >> > at >> > >> org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.invoke(NormalScopedBeanInterceptorHandler.java:108) >> > at >> > >> jsf.rollingStock.pf_RollingStockController_$$_javassist_37.getSelectOneFilterYear(pf_RollingStockController_$$_javassist_37.java) >> > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> > at >> > >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) >> > at >> > >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >> > at java.lang.reflect.Method.invoke(Method.java:601) >> > at javax.el.BeanELResolver.getValue(BeanELResolver.java:302) >> > ... 83 more >> > >> > >> > Please let me know your thoughts. >> > >> > Thanks, >> > Howard >>