Here's my component.
<h:selectManyCheckbox id="stationFeatures" layout="pageDirection"
value="#{userTool.newUserFeatures}" >
<f:selectItems value="#{userTool.featureSelectItems}"/>
</h:selectManyCheckbox>
It presents a list of radio stations a user can select. However as
part of the business requirements they can have none selected. When I
select none and submit the form, I get a NullPointerException. How
come?
Here is the stack trace:
java.lang.NullPointerException
at
org.apache.myfaces.renderkit._SharedRendererUtils.getConvertedUISelectManyValue(_SharedRendererUtils.java:118)
at
org.apache.myfaces.renderkit.RendererUtils.getConvertedUISelectManyValue(RendererUtils.java:792)
at
org.apache.myfaces.renderkit.html.HtmlCheckboxRendererBase.getConvertedValue(HtmlCheckboxRendererBase.java:260)
at
javax.faces.component.UISelectMany.getConvertedValue(UISelectMany.java:295)
at javax.faces.component.UIInput.validate(UIInput.java:291)
at javax.faces.component.UISelectMany.validate(UISelectMany.java:284)
at javax.faces.component.UIInput.processValidators(UIInput.java:166)
at
javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:427)
at
javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:427)
at
javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:427)
at javax.faces.component.UIForm.processValidators(UIForm.java:66)
at
javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:427)
at
javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:162)
at
org.apache.myfaces.lifecycle.LifecycleImpl.processValidations(LifecycleImpl.java:208)
at
org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:92)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:109)
at
org.apache.myfaces.webapp.MyFacesServlet.service(MyFacesServlet.java:70)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at
com.m2g.stationtools.web.filters.StationToolsRequestContextFilter.doFilter(StationToolsRequestContextFilter.java:49)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at
org.apache.myfaces.component.html.util.ExtensionsFilter.doFilter(ExtensionsFilter.java:112)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:72)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at
org.jboss.web.tomcat.security.JBossSecurityMgrRealm.invoke(JBossSecurityMgrRealm.java:275)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:534)