spring-projects / spring-webflow

Spring Web Flow
https://spring.io/projects/spring-webflow
Apache License 2.0
322 stars 229 forks source link

get exception when nagivating in spring web flow 2.2 release [SWF-1393] #580

Open spring-operator opened 13 years ago

spring-operator commented 13 years ago

James opened SWF-1393 and commented

I am using

Myfaces 2.0.1 RichFaces 3.3.3 SWF 2.2

I can start the Spring Web Flow. So the initial view state in SWF is rendered correctly. Once I start navigation in SWF. I got the following exception. I don't have the issue when using SWF 2.1.

Here is snapshot of the RichFaces code.

<a4j:support event="onclick" action="CancelAppt" onsubmit="showCancelModalPanelLeftBar('#{donation.appointmentDateTimeDisplay}');"> <a4j:actionparam id="cancelDonationAppointmentIdLeftBar" name="selectedAppointmentId" value="#{donation.appointmentId}" assignTo="#{myAppointmentsView.selectedAppointmentId}" /> </a4j:support>

[9/1/10 10:09:19:296 CDT] 00000031 StateUtils E View State cannot be reconstructed javax.faces.FacesException: java.lang.IllegalArgumentException: Bad arguments at org.apache.myfaces.shared_impl.util.StateUtils.decrypt(StateUtils.java:490) at org.apache.myfaces.shared_impl.util.StateUtils.reconstruct(StateUtils.java:378) at org.apache.myfaces.renderkit.html.HtmlResponseStateManager.getSavedState(HtmlResponseStateManager.java:213) at org.apache.myfaces.renderkit.html.HtmlResponseStateManager.getTreeStructureToRestore(HtmlResponseStateManager.java:174) at org.springframework.faces.webflow.FlowViewResponseStateManager.getTreeStructureToRestore(FlowViewResponseStateManager.java:135) at org.ajax4jsf.application.AjaxStateManager.restoreLogicalViewId(AjaxStateManager.java:564) at org.ajax4jsf.application.AjaxStateManager.restoreStateFromSession(AjaxStateManager.java:495) at org.ajax4jsf.application.AjaxStateManager.restoreView(AjaxStateManager.java:444) at org.springframework.faces.webflow.FlowViewStateManager.restoreView(FlowViewStateManager.java:192) at org.apache.myfaces.shared_impl.view.ViewDeclarationLanguageBase.restoreView(ViewDeclarationLanguageBase.java:106) at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.restoreView(FaceletViewDeclarationLanguage.java:1273) at org.apache.myfaces.application.ViewHandlerImpl.restoreView(ViewHandlerImpl.java:279) at com.sun.facelets.FaceletViewHandler.restoreView(FaceletViewHandler.java:316) at org.springframework.faces.webflow.FlowViewHandler.restoreFlowView(FlowViewHandler.java:144) at org.springframework.faces.webflow.FlowViewHandler.restoreView(FlowViewHandler.java:83) at org.ajax4jsf.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:107) at org.springframework.faces.webflow.FlowViewHandler.restoreFlowView(FlowViewHandler.java:144) at org.springframework.faces.webflow.FlowViewHandler.restoreView(FlowViewHandler.java:83) at org.springframework.faces.webflow.JsfViewFactory.getView(JsfViewFactory.java:99) at org.springframework.webflow.engine.ViewState.resume(ViewState.java:215) 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:169) at org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:183) at org.springframework.webflow.mvc.servlet.FlowController.handleRequest(FlowController.java:174) at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:774) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560) at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1146) at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1087) at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:145) at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206) at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290) at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388) at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515) at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190) at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130) at com.baxter.biolife.easyscheduler.presentation.util.SessionFilter.doFilter(SessionFilter.java:104) at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190) at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130) at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87) at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:840) at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:683) at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:589) at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:534) at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:90) at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:751) at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1478) at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:126) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:458) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:387) at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:102) at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165) at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136) at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:196) at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:751) at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:881) at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1497) Caused by: java.lang.IllegalArgumentException: Bad arguments at javax.crypto.Mac.update(Unknown Source) at org.apache.myfaces.shared_impl.util.StateUtils.decrypt(StateUtils.java:469) ... 63 more


No further details from SWF-1393

spring-operator commented 13 years ago

Rossen Stoyanchev commented

This exception is not surprising. As indicated in the blog post (http://blog.springsource.com/2010/08/05/spring-web-flow-2-2-0-m1-released) partial state saving is not yet supported for Apache MyFaces. It needs to be disabled through the "javax.faces.PARTIAL_STATE_SAVING" context parameter.

spring-operator commented 13 years ago

James commented

I already disabled the partial state saving when I tested the code. Here is the configuration in my web.xml.

<context-param>
    <param-name>javax.faces.PARTIAL_STATE_SAVING_METHOD</param-name>
    <param-value>false</param-value>
</context-param>