-
Bug
-
Resolution: Won't Do
-
Major
-
None
-
8.1.0.Final
-
None
javax.faces.component.StateHolderSaver does not work properly if the object to be saved does not implement Serializable or StateHolder. Such an object will cause the below exception, if the class does not have a public no-arg constructor.
This issue was already filed with Mojarra as JAVASERVERFACES-1716 by someone else and was closed as Won't Fix. I am not sure why, given that the proposed fix should work and the last comment is completely wrong. But I figure a JBoss developer has a better chance of getting this resolved than I do.
As a workaround, I am declaring a public no-arg constructor, but that risks someone else using it without understanding why it's there.
2014-07-30 13:55:58,201 ERROR [com.lapis.jsf.framework.ui.exception.FrameworkExceptionHandler] (default task-66) Exception ID 1631720075: javax.faces.FacesException: Unexpected error restoring state for component with id j_idt27:analyzerTable. Cause: java.lang.IllegalStateException: java.lang.InstantiationException: com.sg.song.nms.analyzer.field.ViewElementQueryField. at com.sun.faces.application.view.FaceletPartialStateManagementStrategy$2.visit(FaceletPartialStateManagementStrategy.java:387) [jsf-impl-2.2.6-jbossorg-4.jar:] at com.sun.faces.component.visit.FullVisitContext.invokeVisitCallback(FullVisitContext.java:151) [jsf-impl-2.2.6-jbossorg-4.jar:] at org.primefaces.component.api.UIData.visitTree(UIData.java:692) [primefaces-5.0.jar:5.0] at javax.faces.component.UIComponent.visitTree(UIComponent.java:1701) [jboss-jsf-api_2.2_spec-2.2.6.jar:2.2.6] at javax.faces.component.UIForm.visitTree(UIForm.java:371) [jboss-jsf-api_2.2_spec-2.2.6.jar:2.2.6] at javax.faces.component.UIComponent.visitTree(UIComponent.java:1701) [jboss-jsf-api_2.2_spec-2.2.6.jar:2.2.6] at javax.faces.component.UIComponent.visitTree(UIComponent.java:1701) [jboss-jsf-api_2.2_spec-2.2.6.jar:2.2.6] at com.sun.faces.application.view.FaceletPartialStateManagementStrategy.restoreView(FaceletPartialStateManagementStrategy.java:367) [jsf-impl-2.2.6-jbossorg-4.jar:] at com.sun.faces.application.StateManagerImpl.restoreView(StateManagerImpl.java:138) [jsf-impl-2.2.6-jbossorg-4.jar:] at com.sun.faces.application.view.ViewHandlingStrategy.restoreView(ViewHandlingStrategy.java:123) [jsf-impl-2.2.6-jbossorg-4.jar:] at com.sun.faces.application.view.FaceletViewHandlingStrategy.restoreView(FaceletViewHandlingStrategy.java:590) [jsf-impl-2.2.6-jbossorg-4.jar:] at com.sun.faces.application.view.MultiViewHandler.restoreView(MultiViewHandler.java:150) [jsf-impl-2.2.6-jbossorg-4.jar:] at javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:353) [jboss-jsf-api_2.2_spec-2.2.6.jar:2.2.6] at javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:353) [jboss-jsf-api_2.2_spec-2.2.6.jar:2.2.6] at org.omnifaces.viewhandler.RestorableViewHandler.restoreView(RestorableViewHandler.java:66) [omnifaces-1.8.1.jar:1.8.1-20140603] at javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:353) [jboss-jsf-api_2.2_spec-2.2.6.jar:2.2.6] at javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:353) [jboss-jsf-api_2.2_spec-2.2.6.jar:2.2.6] at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:197) [jsf-impl-2.2.6-jbossorg-4.jar:] at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.2.6-jbossorg-4.jar:] at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:121) [jsf-impl-2.2.6-jbossorg-4.jar:] at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) [jsf-impl-2.2.6-jbossorg-4.jar:] at org.apache.deltaspike.jsf.impl.listener.request.DeltaSpikeLifecycleWrapper.execute(DeltaSpikeLifecycleWrapper.java:89) [deltaspike-jsf-module-impl-1.0.1.jar:1.0.1] at javax.faces.lifecycle.LifecycleWrapper.execute(LifecycleWrapper.java:77) [jboss-jsf-api_2.2_spec-2.2.6.jar:2.2.6] at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646) [jboss-jsf-api_2.2_spec-2.2.6.jar:2.2.6] at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:130) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] at io.undertow.websockets.jsr.JsrWebSocketFilter.doFilter(JsrWebSocketFilter.java:123) [undertow-websockets-jsr-1.0.15.Final.jar:1.0.15.Final] at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:85) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:61) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78) at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final] at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:113) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:56) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final] at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:45) [undertow-core-1.0.15.Final.jar:1.0.15.Final] at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:61) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58) [undertow-core-1.0.15.Final.jar:1.0.15.Final] at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76) [undertow-core-1.0.15.Final.jar:1.0.15.Final] at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final] at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61) at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final] at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final] at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:240) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:227) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:73) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:146) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] at io.undertow.server.Connectors.executeRootHandler(Connectors.java:177) [undertow-core-1.0.15.Final.jar:1.0.15.Final] at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:727) [undertow-core-1.0.15.Final.jar:1.0.15.Final] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_05] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_05] at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_05] Caused by: java.lang.IllegalStateException: java.lang.InstantiationException: com.sg.song.nms.analyzer.field.ViewElementQueryField at javax.faces.component.StateHolderSaver.restore(StateHolderSaver.java:153) [jboss-jsf-api_2.2_spec-2.2.6.jar:2.2.6] at javax.faces.component.ComponentStateHelper.restoreState(ComponentStateHelper.java:306) [jboss-jsf-api_2.2_spec-2.2.6.jar:2.2.6] at javax.faces.component.UIComponentBase.restoreState(UIComponentBase.java:1621) [jboss-jsf-api_2.2_spec-2.2.6.jar:2.2.6] at javax.faces.component.UIData.restoreState(UIData.java:1750) [jboss-jsf-api_2.2_spec-2.2.6.jar:2.2.6] at com.sun.faces.application.view.FaceletPartialStateManagementStrategy$2.visit(FaceletPartialStateManagementStrategy.java:380) [jsf-impl-2.2.6-jbossorg-4.jar:] ... 54 more Caused by: java.lang.InstantiationException: com.sg.song.nms.analyzer.field.ViewElementQueryField at java.lang.Class.newInstance(Class.java:418) [rt.jar:1.8.0_05] at javax.faces.component.StateHolderSaver.restore(StateHolderSaver.java:150) [jboss-jsf-api_2.2_spec-2.2.6.jar:2.2.6] ... 58 more Caused by: java.lang.NoSuchMethodException: com.sg.song.nms.analyzer.field.ViewElementQueryField.<init>() at java.lang.Class.getConstructor0(Class.java:2971) [rt.jar:1.8.0_05] at java.lang.Class.newInstance(Class.java:403) [rt.jar:1.8.0_05] ... 59 more