Hi

Looking the stack trace provided very carefully, I can see the problem is
not in myfaces, it is on spring class FlowViewStateManager. Take a look at
this three lines:

at javax.faces.component.UIViewRoot.processRestoreState(UIViewRoot.java:643)

at
org.springframework.faces.webflow.FlowViewStateManager.restoreComponentState(FlowViewStateManager.java:77)

at
org.springframework.faces.webflow.FlowViewStateManager.restoreView(FlowViewStateManager.java:159)


The code related is this:

        public UIViewRoot restoreView(FacesContext context, String viewId,
String renderKitId) {
                if (!JsfUtils.isFlowRequest()) {
                        return delegate.restoreView(context, viewId, 
renderKitId);
                }
                UIViewRoot viewRoot = restoreTreeStructure(context, viewId, 
renderKitId);
                if (viewRoot != null) {
                        restoreComponentState(context, viewRoot, renderKitId);
                }
                return viewRoot;
        }

What's the problem? well, look this code from myfaces JspStateManagerImpl:

            if (state != null) {
                Object[] stateArray = (Object[])state;
                TreeStructureManager tsm = new TreeStructureManager();
                uiViewRoot = tsm.restoreTreeStructure(stateArray[0]);

                if (uiViewRoot != null) {
                    facesContext.setViewRoot (uiViewRoot);
                    uiViewRoot.processRestoreState(facesContext,
stateArray[1]);
                }
            }

It is supposed after restore the tree structure, that
facesContext.setViewRoot(uiViewRoot) should be called. Inclusive, in
DefaultFaceletsStateManagementStrategy we do the same too. An issue should
be created against spring web flow.

regards,

Leonardo Uribe

2010/3/23 Jakob Korherr <[email protected]>

> Yeah, great! Thanks ;)
>
> Regards,
> Jakob
>
> 2010/3/23 Matthias Leis <[email protected]>
>
> > Hi,
> >
> > JIRA link is https://issues.apache.org/jira/browse/MYFACES-2620
> >
> > I hope I've done it right ;)
> >
> > Matthias
> > -------- Original-Nachricht --------
> > > Datum: Tue, 23 Mar 2010 15:59:22 +0100
> > > Von: Jakob Korherr <[email protected]>
> > > An: MyFaces Discussion <[email protected]>
> > > Betreff: Re: UIComponentBase.java - context.getViewRoot() returns null
> >
> > > Hi,
> > >
> > > OK great! I'll take a look at it later ;)
> > >
> > > Regards,
> > > Jakob
> > >
> > > 2010/3/23 Matthias Leis <[email protected]>
> > >
> > > > Hi,
> > > >
> > > > I just saw, that I'm not working with the beta 2 but with the
> snapshot.
> > > In
> > > > beta 2 the NPW is thrown at line 1038 (in snapshot at line 1041).
> > > > The line is:
> > > >
> > > >   String renderKitId = context.getViewRoot().getRenderKitId();
> > > >
> > > > And looking at the variables in debugging mode says, that the
> viewRoot
> > > is
> > > > null. Sorry for the confusion :)
> > > >
> > > > Of course I don't mind to open a JIRA issue :)
> > > >
> > > > PS: I know tomahawk isn't even supposed to work with myfaces 2, but
> in
> > > > generally it does. This one here is the only compatibility problem I
> > > found
> > > > (...for now ;) )
> > > >
> > > > Matthias
> > > > -------- Original-Nachricht --------
> > > > > Datum: Tue, 23 Mar 2010 15:44:32 +0100
> > > > > Von: Jakob Korherr <[email protected]>
> > > > > An: MyFaces Discussion <[email protected]>
> > > > > Betreff: Re: UIComponentBase.java - context.getViewRoot() returns
> > null
> > > >
> > > > > Hi,
> > > > >
> > > > > Unfortunately there is no tomahawk port for MyFaces 2.0 available
> > yet,
> > > so
> > > > > this might be a compatibility problem.
> > > > >
> > > > > I traced the Exception down and found out that it happens, because
> > the
> > > > > RenderKitFactory returns null for the RenderKit here, see the code
> > > from
> > > > > UIComponentBase:
> > > > >
> > > > >         String renderKitId =
> context.getViewRoot().getRenderKitId();
> > > > >         RenderKitFactory rkf = (RenderKitFactory)
> > > > > FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
> > > > >         RenderKit renderKit = rkf.getRenderKit(context,
> renderKitId);
> > > > >         Renderer renderer = renderKit.getRenderer(getFamily(),
> > > > > rendererType);
> > > > >
> > > > > In the last line renderKit is null and thus we get a NPE.
> > > > >
> > > > > Do you mind opening a JIRA issue for this? This would be really
> > great.
> > > > >
> > > > > Thanks!
> > > > >
> > > > > Regards,
> > > > > Jakob
> > > > >
> > > > > 2010/3/23 Matthias Leis <[email protected]>
> > > > >
> > > > > > Hi,
> > > > > >
> > > > > > I'm using myfaces 2.0 beta 2 and currently I'm using a
> > <h:dataTable>
> > > on
> > > > > my
> > > > > > pages and everything is fine.
> > > > > > For some reasons (sorting etc.) I want to use the <t:dataTable>
> > > (from
> > > > > > Tomahawk 1.1.9).
> > > > > >
> > > > > > Now, when I click on a link inside the table, I get the following
> > > > > > exception:
> > > > > > java.lang.NullPointerException
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> javax.faces.component.UIComponentBase.getRenderer(UIComponentBase.java:1041)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.myfaces.component.html.ext.HtmlDataTableHack.getClientId(HtmlDataTableHack.java:111)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.myfaces.component.html.ext.AbstractHtmlDataTable.getClientId(AbstractHtmlDataTable.java:135)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.myfaces.component.html.ext.HtmlDataTableHack.setRowIndex(HtmlDataTableHack.java:275)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.myfaces.component.html.ext.AbstractHtmlDataTable.setRowIndex(AbstractHtmlDataTable.java:276)
> > > > > >        at
> javax.faces.component.UIData.visitTree(UIData.java:1257)
> > > > > >        at
> > > > > javax.faces.component.UIComponent.visitTree(UIComponent.java:770)
> > > > > >        at
> > > > > javax.faces.component.UIComponent.visitTree(UIComponent.java:770)
> > > > > >        at
> > > > > >
> > > > >
> > >
> javax.faces.component.UIViewRoot.processRestoreState(UIViewRoot.java:648)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.faces.webflow.FlowViewStateManager.restoreComponentState(FlowViewStateManager.java:77)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.faces.webflow.FlowViewStateManager.restoreView(FlowViewStateManager.java:159)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.myfaces.shared_impl.view.ViewDeclarationLanguageBase.restoreView(ViewDeclarationLanguageBase.java:106)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.restoreView(FaceletViewDeclarationLanguage.java:1230)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.myfaces.application.ViewHandlerImpl.restoreView(ViewHandlerImpl.java:240)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> com.sun.facelets.FaceletViewHandler.restoreView(FaceletViewHandler.java:316)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.faces.webflow.FlowViewHandler.restoreFlowView(FlowViewHandler.java:128)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.faces.webflow.FlowViewHandler.restoreView(FlowViewHandler.java:75)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.faces.webflow.JsfViewFactory.getView(JsfViewFactory.java:93)
> > > > > >        at
> > > > > >
> > > org.springframework.webflow.engine.ViewState.resume(ViewState.java:193)
> > > > > >        at
> > > org.springframework.webflow.engine.Flow.resume(Flow.java:545)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.webflow.engine.impl.FlowExecutionImpl.resume(FlowExecutionImpl.java:259)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.webflow.executor.FlowExecutorImpl.resumeExecution(FlowExecutorImpl.java:163)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:183)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:563)
> > > > > >        at
> > > javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
> > > > > >        at
> > > javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:341)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:343)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:177)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:188)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:149)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> > > > > >        at
> > main.util.RendererFilter.doFilter(RendererFilter.java:103)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
> > > > > >        at
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
> > > > > >        at
> > > > > >
> > > org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
> > > > > >        at java.lang.Thread.run(Unknown Source)
> > > > > >
> > > > > > Is this the "fault" of myfaces or tomahawk? Is it possible to
> > check,
> > > if
> > > > > the
> > > > > > viewId is null, and - if so - create a new one?
> > > > > >
> > > > > > Any help is appreciated :)
> > > > > >
> > > > > > Thx, Matthias
> > > > > > --
> > > > > > GMX DSL: Internet, Telefon und Entertainment für nur 19,99
> > > EUR/mtl.!
> > > > > > http://portal.gmx.net/de/go/dsl02
> > > > > >
> > > >
> > > > --
> > > > Sicherer, schneller und einfacher. Die aktuellen Internet-Browser -
> > > > jetzt kostenlos herunterladen! http://portal.gmx.net/de/go/atbrowser
> > > >
> >
> > --
> > GMX DSL: Internet, Telefon und Entertainment für nur 19,99 EUR/mtl.!
> > http://portal.gmx.net/de/go/dsl02
> >
>

Reply via email to