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 80DCFD7F4 for ; Tue, 18 Dec 2012 00:43:13 +0000 (UTC) Received: (qmail 93357 invoked by uid 500); 18 Dec 2012 00:43:12 -0000 Delivered-To: apmail-myfaces-users-archive@myfaces.apache.org Received: (qmail 93322 invoked by uid 500); 18 Dec 2012 00:43:12 -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 93299 invoked by uid 99); 18 Dec 2012 00:43:11 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 18 Dec 2012 00:43:11 +0000 X-ASF-Spam-Status: No, hits=1.7 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT,HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of smithh032772@gmail.com designates 209.85.212.172 as permitted sender) Received: from [209.85.212.172] (HELO mail-wi0-f172.google.com) (209.85.212.172) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 18 Dec 2012 00:43:02 +0000 Received: by mail-wi0-f172.google.com with SMTP id o1so2332619wic.17 for ; Mon, 17 Dec 2012 16:42:42 -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=ASbwu4/AbwEv4eTju2hK7AZEEH6kUvS6RjxAMjkzXbY=; b=vho7QtVSv26RCAKu1xnHLjXHRkSv7LCDk3p/cSmNyEsf2EC0rKdgk+EVfTobQeg2UU 1AQaEP4knbH/AJv525f6MBqtUCb6n/sKp8mg4FarhwT+3L/58XvQECVM0mM1NyQy3flb 5aCyCjSGeNDQmGUlXdxg26kXz7OIxBrrxKgibZRENYF0id+nwex99R4gizHVXJUwQsTF yXhvy8QXxQctq3Cl0y/KlE2sAsVdf7su1aOJUxUdhGVu0ZFsxRjZlECXdgyPg8K6y+et uqI8bckgZfZVUMsCBVYywZwHBnz/pMdnf05gxxMYT4ac6foKCdbFKUqEvXyNN/FcoOC6 tO4Q== MIME-Version: 1.0 Received: by 10.194.85.168 with SMTP id i8mr371388wjz.18.1355791362587; Mon, 17 Dec 2012 16:42:42 -0800 (PST) Received: by 10.194.137.37 with HTTP; Mon, 17 Dec 2012 16:42:42 -0800 (PST) In-Reply-To: References: Date: Mon, 17 Dec 2012 19:42:42 -0500 Message-ID: Subject: Re: TomEE/MyFaces: EL exception NulPointerException for h:selectOneMenu From: "Howard W. Smith, Jr." To: MyFaces Discussion , users@openejb.apache.org Content-Type: multipart/alternative; boundary=089e010d7efc8e7b8804d115c6ed X-Virus-Checked: Checked by ClamAV on apache.org --089e010d7efc8e7b8804d115c6ed Content-Type: text/plain; charset=ISO-8859-1 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 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 > --089e010d7efc8e7b8804d115c6ed--