[ https://issues.apache.org/jira/browse/MYFACES-3304?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Leonardo Uribe updated MYFACES-3304: ------------------------------------ Resolution: Fixed Fix Version/s: 2.1.4 2.0.10 Assignee: Leonardo Uribe Status: Resolved (was: Patch Available) > NullPointerException using h:selectOneRadio with an enum > -------------------------------------------------------- > > Key: MYFACES-3304 > URL: https://issues.apache.org/jira/browse/MYFACES-3304 > Project: MyFaces Core > Issue Type: Bug > Affects Versions: 2.0.8 > Environment: Ubuntu 11.0.4, Jetty 6.1.10, JDK 1.6, Myfaces Core > 2.0.8, Primefaces 3.0.M3 > Reporter: Joe Rossi > Assignee: Leonardo Uribe > Priority: Minor > Fix For: 2.0.10, 2.1.4 > > Attachments: MYFACES-3304-1.patch > > > Trying to use a h:selectOneRadio to select one of two values for an enum and > it fails, throwing a NullPointerException. No explicit converter is in use so > (from debugging) it appears to be using the default EnumConverter. > Code snippets in question are as follows: > testLovs.xhtml: > <h:panelGrid columns="1"> > Simple radio button with constant string values > <h:selectOneRadio id="l1" value="#{testLovsBean.l1}"> > <f:selectItem itemValue="A" itemLabel="labelA"/> > <f:selectItem itemValue="B" itemLabel="labelB"/> > </h:selectOneRadio> > <h:outputText id="l1Str" value="l1: #{testLovBean.l1AsString}"/> > <p:separator/> > Radio button for enum > <h:selectOneRadio id="l2" value="#{testLovsBean.l2}"> > <f:selectItem itemValue="#{VALUEA}" itemLabel="labelA"/> > <f:selectItem itemValue="#{VALUEB}" itemLabel="labelB"/> > </h:selectOneRadio> > <h:outputText id="l2Str" value="l2: #{testLovBean.l2AsString}"/> > <p:separator/> > <p:commandButton id="commitCommand" > action="#{testLovsBean.commitAction}" > value="Submit" > ajax="false"/> > TestLovsBean.java: > package tn.view.bean.test; > import org.springframework.context.annotation.Scope; > import org.springframework.stereotype.Component; > import tn.view.util.FacesUtils; > /** > * Class used for testing date controls > */ > @Component > @Scope("request") > public class TestLovsBean > { > public TestLovsBean() > { > } > public String getL1() > { > return _l1; > } > public void setL1(String l1) > { > _l1 = l1; > } > public String getL1AsString() > { > return _l1; > } > public TestEnum getL2() > { > return _l2; > } > public void setL2(TestEnum l2) > { > _l2 = l2; > } > public String commitAction() > { > System.out.println("commitAction invoked"); > FacesUtils.addInfoMessage("L1: " + _l1); > FacesUtils.addInfoMessage("L2: " + _l2); > return null; > } > private String _l1; > private TestEnum _l2; > } > TestEnum.java: > package tn.view.bean.test; > public enum TestEnum > { > VALUEA, > VALUEB, > } > Stack trace: > javax.servlet.ServletException > at javax.faces.webapp.FacesServlet.service(FacesServlet.java:221) > at > org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093) > at > tn.view.error.ResponseCapturingFilter.doFilter(ResponseCapturingFilter.java:83) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) > at > tn.view.error.AbstractUncaughtExceptionInterceptor.doFilter(AbstractUncaughtExceptionInterceptor.java:66) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) > at > net.sf.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:292) > at > net.sf.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:108) > at > net.sf.acegisecurity.intercept.web.SecurityEnforcementFilter.doFilter(SecurityEnforcementFilter.java:197) > at > net.sf.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:303) > at > net.sf.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:143) > at > net.sf.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:303) > at > net.sf.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:214) > at > net.sf.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:303) > at > net.sf.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:324) > at > net.sf.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:303) > at > net.sf.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:220) > at > net.sf.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:303) > at > net.sf.acegisecurity.securechannel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:168) > at > tn.security.CustomChannelProcessingFilter.doFilter(CustomChannelProcessingFilter.java:23) > at > net.sf.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:303) > at > net.sf.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:173) > at > net.sf.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:120) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) > at > net.sf.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:50) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) > at > tn.view.filter.StaticContentCachingFilter.doFilter(StaticContentCachingFilter.java:85) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) > at > tn.view.error.AbstractUncaughtExceptionFilter.doFilter(AbstractUncaughtExceptionFilter.java:81) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) > at > org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360) > at > org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) > at > org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) > at > org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139) > at > org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49) > at > org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712) > at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) > at > org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211) > at > org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) > at > org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139) > at org.mortbay.jetty.Server.handle(Server.java:313) > at > org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506) > at > org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:830) > at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514) > at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) > at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381) > at > org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:227) > at > org.mortbay.jetty.security.SslSocketConnector$SslConnection.run(SslSocketConnector.java:626) > at > org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442) > Caused by: java.lang.NullPointerException > at > org.apache.myfaces.shared.renderkit.html.HtmlRadioRendererBase.renderGroupOrItemRadio(HtmlRadioRendererBase.java:221) > at > org.apache.myfaces.shared.renderkit.html.HtmlRadioRendererBase.encodeEnd(HtmlRadioRendererBase.java:126) > at > javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:539) > at > org.apache.myfaces.shared.renderkit.RendererUtils.renderChild(RendererUtils.java:551) > at > org.apache.myfaces.shared.renderkit.html.HtmlGridRendererBase.renderChildren(HtmlGridRendererBase.java:334) > at > org.apache.myfaces.shared.renderkit.html.HtmlGridRendererBase.encodeEnd(HtmlGridRendererBase.java:169) > at > javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:539) > at > org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:64) > at > org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:48) > at > org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:62) > at > org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:48) > at > org.primefaces.component.layout.LayoutUnitRenderer.encodeEnd(LayoutUnitRenderer.java:51) > at > javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:539) > at javax.faces.component.UIComponent.encodeAll(UIComponent.java:641) > at javax.faces.component.UIComponent.encodeAll(UIComponent.java:637) > at javax.faces.component.UIComponent.encodeAll(UIComponent.java:637) > at javax.faces.component.UIComponent.encodeAll(UIComponent.java:637) > at > org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.renderView(FaceletViewDeclarationLanguage.java:1481) > at > org.apache.myfaces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:264) > at > org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:90) > at > org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:239) > at javax.faces.webapp.FacesServlet.service(FacesServlet.java:191) > ... 49 more -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira