You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by "Howard W. Smith, Jr." <sm...@gmail.com> on 2012/12/17 19:53:30 UTC

TomEE/MyFaces: EL exception NulPointerException for h:selectOneMenu

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.

<p:commandButton value="Browse" icon="ui-icon-search" immediate="true"
                 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

<h:selectOneMenu value="#{pf_rollingStockController.filterYear}">
    <f:selectItem itemValue="0"

itemLabel="#{pf_rollingStockController.selectOneFilterYear}" />
    <f:selectItems value="#{pf_rollingStockController.allYears}"/>
    <p:ajax partialSubmit="true"
listener="#{pf_rollingStockController.prepareList()}"
            update=":pageContentPanel"/>
</h:selectOneMenu>


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

Re: TomEE/MyFaces: EL exception NulPointerException for h:selectOneMenu

Posted by Leonardo Uribe <lu...@gmail.com>.
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. <sm...@gmail.com>:
> 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
>
> <h:selectOneMenu value="#{pf_rollingStockController.filterYear}">
>     <f:selectItem itemValue="0"
>
> itemLabel="#{pf_rollingStockController.selectOneFilterYear}" />
>     <f:selectItems value="#{pf_rollingStockController.allYears}"/>
>     <p:ajax partialSubmit="true"
> listener="#{pf_rollingStockController.prepareList()}"
>             update=":pageContentPanel"/>
> </h:selectOneMenu>
>
>
> 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 <lu...@gmail.com> 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. <sm...@gmail.com>:
>> > 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.
>> >
>> > <p:commandButton value="Browse" icon="ui-icon-search" immediate="true"
>> >
>>  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
>> >
>> > <h:selectOneMenu value="#{pf_rollingStockController.filterYear}">
>> >     <f:selectItem itemValue="0"
>> >
>> > itemLabel="#{pf_rollingStockController.selectOneFilterYear}" />
>> >     <f:selectItems value="#{pf_rollingStockController.allYears}"/>
>> >     <p:ajax partialSubmit="true"
>> > listener="#{pf_rollingStockController.prepareList()}"
>> >             update=":pageContentPanel"/>
>> > </h:selectOneMenu>
>> >
>> >
>> > 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
>>

Re: TomEE/MyFaces: EL exception NulPointerException for h:selectOneMenu

Posted by "Howard W. Smith, Jr." <sm...@gmail.com>.
Great idea, Romain, thanks.

On Tue, Dec 18, 2012 at 1:55 AM, Romain Manni-Bucau
<rm...@gmail.com>wrote:

> Just put a breakpoint in your setter then share the stacktrace at this
> moment
>


server log

Dec 18, 2012 5:59:26 AM pf.ApplicationScopeBean log
INFO: pf_UsersController.loginUser(): administrator logged in at Tue Dec 18
05:59:26 EST 2012
Dec 18, 2012 6:00:33 AM pf.ApplicationScopeBean log
INFO: pf_RollingStockController.init(): BEFORE filterYear = 0
Dec 18, 2012 6:00:33 AM pf.ApplicationScopeBean log
INFO: pf_RollingStockController.init(): AFTER filterYear = 0; filterYear
(now) = 0
Dec 18, 2012 6:00:39 AM javax.faces.component._ExternalSpecifications
isBeanValidationAvailable
INFO: MyFaces Bean Validation support enabled
Dec 18, 2012 6:00:39 AM pf.ApplicationScopeBean log
INFO: pf_RollingStockController.setFilterYear() called with argument
filterYear = 0 while this.filterYear = 0
Dec 18, 2012 6:00:39 AM pf.ApplicationScopeBean log
INFO: pf_RollingStockController.setFilterYear() called with argument
filterYear = null while this.filterYear = 0
Dec 18, 2012 6:00:39 AM pf.ApplicationScopeBean log
INFO: pf_RollingStockController.setFilterYear() called with argument
filterYear = null while this.filterYear = 0

stacktrace

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:312)
	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.setValue(ContextAwareTagValueExpression.java:166)
	at javax.faces.component.UIInput.updateModel(UIInput.java:406)
	at javax.faces.component.UIInput.processUpdates(UIInput.java:328)
	at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1477)
	at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1470)
	at org.primefaces.component.api.UIData.process(UIData.java:317)
	at org.primefaces.component.api.UIData.processChildren(UIData.java:299)
	at org.primefaces.component.api.UIData.processPhase(UIData.java:263)
	at org.primefaces.component.api.UIData.processUpdates(UIData.java:255)
	at org.primefaces.component.datatable.DataTable.processUpdates(DataTable.java:530)
	at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1477)
	at org.primefaces.component.panel.Panel.processUpdates(Panel.java:304)
	at javax.faces.component.UIForm.processUpdates(UIForm.java:263)
	at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1477)
	at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1477)
	at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1477)
	at org.primefaces.extensions.component.layout.Layout.processUpdates(Layout.java:239)
	at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1477)
	at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1477)
	at javax.faces.component.UIViewRoot._processUpdatesDefault(UIViewRoot.java:1411)
	at javax.faces.component.UIViewRoot.access$600(UIViewRoot.java:74)
	at javax.faces.component.UIViewRoot$UpdateModelPhaseProcessor.process(UIViewRoot.java:1549)
	at javax.faces.component.UIViewRoot._process(UIViewRoot.java:1372)
	at javax.faces.component.UIViewRoot.processUpdates(UIViewRoot.java:806)
	at org.apache.myfaces.lifecycle.UpdateModelValuesExecutor.execute(UpdateModelValuesExecutor.java:38)
	at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:170)
	at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
	... 27 more
Caused by: javax.el.ELException: java.lang.NullPointerException
	at javax.el.BeanELResolver.setValue(BeanELResolver.java:386)
	at javax.el.CompositeELResolver.setValue(CompositeELResolver.java:386)
	at de.odysseus.el.tree.impl.ast.AstProperty.setValue(AstProperty.java:156)
	at de.odysseus.el.tree.impl.ast.AstEval.setValue(AstEval.java:87)
	at de.odysseus.el.TreeValueExpression.setValue(TreeValueExpression.java:146)
	at org.apache.webbeans.el.WrappedValueExpression.setValue(WrappedValueExpression.java:93)
	at org.apache.myfaces.view.facelets.el.ContextAwareTagValueExpression.setValue(ContextAwareTagValueExpression.java:153)
	... 54 more
Caused by: java.lang.NullPointerException
	at jsf.rollingStock.pf_RollingStockController.setFilterYear(pf_RollingStockController.java:228)
	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.setFilterYear(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.setValue(BeanELResolver.java:381)
	... 60 more

Re: TomEE/MyFaces: EL exception NulPointerException for h:selectOneMenu

Posted by "Howard W. Smith, Jr." <sm...@gmail.com>.
Great idea, Romain, thanks.

On Tue, Dec 18, 2012 at 1:55 AM, Romain Manni-Bucau
<rm...@gmail.com>wrote:

> Just put a breakpoint in your setter then share the stacktrace at this
> moment
>


server log

Dec 18, 2012 5:59:26 AM pf.ApplicationScopeBean log
INFO: pf_UsersController.loginUser(): administrator logged in at Tue Dec 18
05:59:26 EST 2012
Dec 18, 2012 6:00:33 AM pf.ApplicationScopeBean log
INFO: pf_RollingStockController.init(): BEFORE filterYear = 0
Dec 18, 2012 6:00:33 AM pf.ApplicationScopeBean log
INFO: pf_RollingStockController.init(): AFTER filterYear = 0; filterYear
(now) = 0
Dec 18, 2012 6:00:39 AM javax.faces.component._ExternalSpecifications
isBeanValidationAvailable
INFO: MyFaces Bean Validation support enabled
Dec 18, 2012 6:00:39 AM pf.ApplicationScopeBean log
INFO: pf_RollingStockController.setFilterYear() called with argument
filterYear = 0 while this.filterYear = 0
Dec 18, 2012 6:00:39 AM pf.ApplicationScopeBean log
INFO: pf_RollingStockController.setFilterYear() called with argument
filterYear = null while this.filterYear = 0
Dec 18, 2012 6:00:39 AM pf.ApplicationScopeBean log
INFO: pf_RollingStockController.setFilterYear() called with argument
filterYear = null while this.filterYear = 0

stacktrace

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:312)
	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.setValue(ContextAwareTagValueExpression.java:166)
	at javax.faces.component.UIInput.updateModel(UIInput.java:406)
	at javax.faces.component.UIInput.processUpdates(UIInput.java:328)
	at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1477)
	at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1470)
	at org.primefaces.component.api.UIData.process(UIData.java:317)
	at org.primefaces.component.api.UIData.processChildren(UIData.java:299)
	at org.primefaces.component.api.UIData.processPhase(UIData.java:263)
	at org.primefaces.component.api.UIData.processUpdates(UIData.java:255)
	at org.primefaces.component.datatable.DataTable.processUpdates(DataTable.java:530)
	at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1477)
	at org.primefaces.component.panel.Panel.processUpdates(Panel.java:304)
	at javax.faces.component.UIForm.processUpdates(UIForm.java:263)
	at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1477)
	at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1477)
	at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1477)
	at org.primefaces.extensions.component.layout.Layout.processUpdates(Layout.java:239)
	at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1477)
	at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1477)
	at javax.faces.component.UIViewRoot._processUpdatesDefault(UIViewRoot.java:1411)
	at javax.faces.component.UIViewRoot.access$600(UIViewRoot.java:74)
	at javax.faces.component.UIViewRoot$UpdateModelPhaseProcessor.process(UIViewRoot.java:1549)
	at javax.faces.component.UIViewRoot._process(UIViewRoot.java:1372)
	at javax.faces.component.UIViewRoot.processUpdates(UIViewRoot.java:806)
	at org.apache.myfaces.lifecycle.UpdateModelValuesExecutor.execute(UpdateModelValuesExecutor.java:38)
	at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:170)
	at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
	... 27 more
Caused by: javax.el.ELException: java.lang.NullPointerException
	at javax.el.BeanELResolver.setValue(BeanELResolver.java:386)
	at javax.el.CompositeELResolver.setValue(CompositeELResolver.java:386)
	at de.odysseus.el.tree.impl.ast.AstProperty.setValue(AstProperty.java:156)
	at de.odysseus.el.tree.impl.ast.AstEval.setValue(AstEval.java:87)
	at de.odysseus.el.TreeValueExpression.setValue(TreeValueExpression.java:146)
	at org.apache.webbeans.el.WrappedValueExpression.setValue(WrappedValueExpression.java:93)
	at org.apache.myfaces.view.facelets.el.ContextAwareTagValueExpression.setValue(ContextAwareTagValueExpression.java:153)
	... 54 more
Caused by: java.lang.NullPointerException
	at jsf.rollingStock.pf_RollingStockController.setFilterYear(pf_RollingStockController.java:228)
	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.setFilterYear(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.setValue(BeanELResolver.java:381)
	... 60 more

Re: TomEE/MyFaces: EL exception NulPointerException for h:selectOneMenu

Posted by Romain Manni-Bucau <rm...@gmail.com>.
Hi Howard

Just put a breakpoint in your setter then share the stacktrace at this
moment
Le 18 déc. 2012 01:43, "Howard W. Smith, Jr." <sm...@gmail.com> a
écrit :

> 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
>
> <h:selectOneMenu value="#{pf_rollingStockController.filterYear}">
>     <f:selectItem itemValue="0"
>
> itemLabel="#{pf_rollingStockController.selectOneFilterYear}" />
>     <f:selectItems value="#{pf_rollingStockController.allYears}"/>
>     <p:ajax partialSubmit="true"
> listener="#{pf_rollingStockController.prepareList()}"
>             update=":pageContentPanel"/>
> </h:selectOneMenu>
>
>
> 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 <lu...@gmail.com> 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. <sm...@gmail.com>:
> > > 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.
> > >
> > > <p:commandButton value="Browse" icon="ui-icon-search" immediate="true"
> > >
> >  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
> > >
> > > <h:selectOneMenu value="#{pf_rollingStockController.filterYear}">
> > >     <f:selectItem itemValue="0"
> > >
> > > itemLabel="#{pf_rollingStockController.selectOneFilterYear}" />
> > >     <f:selectItems value="#{pf_rollingStockController.allYears}"/>
> > >     <p:ajax partialSubmit="true"
> > > listener="#{pf_rollingStockController.prepareList()}"
> > >             update=":pageContentPanel"/>
> > > </h:selectOneMenu>
> > >
> > >
> > > 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
> >
>

Re: TomEE/MyFaces: EL exception NulPointerException for h:selectOneMenu

Posted by "Howard W. Smith, Jr." <sm...@gmail.com>.
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

<h:selectOneMenu value="#{pf_rollingStockController.filterYear}">
    <f:selectItem itemValue="0"

itemLabel="#{pf_rollingStockController.selectOneFilterYear}" />
    <f:selectItems value="#{pf_rollingStockController.allYears}"/>
    <p:ajax partialSubmit="true"
listener="#{pf_rollingStockController.prepareList()}"
            update=":pageContentPanel"/>
</h:selectOneMenu>


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 <lu...@gmail.com> 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. <sm...@gmail.com>:
> > 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.
> >
> > <p:commandButton value="Browse" icon="ui-icon-search" immediate="true"
> >
>  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
> >
> > <h:selectOneMenu value="#{pf_rollingStockController.filterYear}">
> >     <f:selectItem itemValue="0"
> >
> > itemLabel="#{pf_rollingStockController.selectOneFilterYear}" />
> >     <f:selectItems value="#{pf_rollingStockController.allYears}"/>
> >     <p:ajax partialSubmit="true"
> > listener="#{pf_rollingStockController.prepareList()}"
> >             update=":pageContentPanel"/>
> > </h:selectOneMenu>
> >
> >
> > 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
>

Re: TomEE/MyFaces: EL exception NulPointerException for h:selectOneMenu

Posted by "Howard W. Smith, Jr." <sm...@gmail.com>.
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

<h:selectOneMenu value="#{pf_rollingStockController.filterYear}">
    <f:selectItem itemValue="0"

itemLabel="#{pf_rollingStockController.selectOneFilterYear}" />
    <f:selectItems value="#{pf_rollingStockController.allYears}"/>
    <p:ajax partialSubmit="true"
listener="#{pf_rollingStockController.prepareList()}"
            update=":pageContentPanel"/>
</h:selectOneMenu>


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 <lu...@gmail.com> 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. <sm...@gmail.com>:
> > 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.
> >
> > <p:commandButton value="Browse" icon="ui-icon-search" immediate="true"
> >
>  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
> >
> > <h:selectOneMenu value="#{pf_rollingStockController.filterYear}">
> >     <f:selectItem itemValue="0"
> >
> > itemLabel="#{pf_rollingStockController.selectOneFilterYear}" />
> >     <f:selectItems value="#{pf_rollingStockController.allYears}"/>
> >     <p:ajax partialSubmit="true"
> > listener="#{pf_rollingStockController.prepareList()}"
> >             update=":pageContentPanel"/>
> > </h:selectOneMenu>
> >
> >
> > 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
>

Re: TomEE/MyFaces: EL exception NulPointerException for h:selectOneMenu

Posted by Leonardo Uribe <lu...@gmail.com>.
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. <sm...@gmail.com>:
> 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.
>
> <p:commandButton value="Browse" icon="ui-icon-search" immediate="true"
>                  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
>
> <h:selectOneMenu value="#{pf_rollingStockController.filterYear}">
>     <f:selectItem itemValue="0"
>
> itemLabel="#{pf_rollingStockController.selectOneFilterYear}" />
>     <f:selectItems value="#{pf_rollingStockController.allYears}"/>
>     <p:ajax partialSubmit="true"
> listener="#{pf_rollingStockController.prepareList()}"
>             update=":pageContentPanel"/>
> </h:selectOneMenu>
>
>
> 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