[jbossseam-issues] [JBoss JIRA] Commented: (JBSEAM-635) Pageflow started in render response phase using <start-page>doesn't work

Richard Leherpeur (JIRA) jira-events at jboss.com
Wed Jan 10 04:33:26 EST 2007


    [ http://jira.jboss.com/jira/browse/JBSEAM-635?page=comments#action_12349899 ] 
            
Richard Leherpeur commented on JBSEAM-635:
------------------------------------------

Hi Gavin,

But then I get the following exception:
10:20:23,406 ERROR [PhaseListenerManager] Exception in PhaseListener RENDER_RESPONSE(6) beforePhase.
java.lang.IllegalStateException: pageflow is not currently at a <page> or <start-page> node (note that pageflows that begin during the RENDER_RESPONSE phase should use <start-page> instead of <start-state>)
    at org.jboss.seam.core.Pageflow.getPage(Pageflow.java:166)
    at org.jboss.seam.core.Manager.prepareBackswitch(Manager.java:981)
    at org.jboss.seam.jsf.AbstractSeamPhaseListener.beforeRender(AbstractSeamPhaseListener.java:216)
    at org.jboss.seam.jsf.SeamPhaseListener.beforePhase(SeamPhaseListener.java:51)
    at org.apache.myfaces.lifecycle.PhaseListenerManager.informPhaseListenersBefore(PhaseListenerManager.java:70)
    at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:373)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:138)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.jboss.seam.servlet.SeamRedirectFilter.doFilter(SeamRedirectFilter.java:32)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.jboss.seam.servlet.SeamExceptionFilter.doFilter(SeamExceptionFilter.java:46)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at com.peanutcafe.filter.UploadFilter.doFilter(UploadFilter.java:67)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
    at java.lang.Thread.run(Thread.java:595)
10:20:23,406 INFO  [SeamExceptionFilter] killing transaction

Which make sense to me since the flow is started from an action (not a page) defined in pages.xml.
So now I'm confused as to how the pageflow is supposed to work in that case.

Regards,

Richard



> Pageflow started in render response phase using <start-page>doesn't work
> ------------------------------------------------------------------------
>
>                 Key: JBSEAM-635
>                 URL: http://jira.jboss.com/jira/browse/JBSEAM-635
>             Project: JBoss Seam
>          Issue Type: Bug
>          Components: BPM
>    Affects Versions: 1.1.0.GA
>         Environment: Jboss 4.0.5GA
>            Reporter: Richard Leherpeur
>         Assigned To: Gavin King
>
> With the following pageflow definition:
> <?xml version="1.0"?>
> <pageflow-definition name="test">
>    
> 	<start-page name="start">
> 		<transition to="isUserLoggedIn"/>
> 	</start-page>
>     
> 	<decision name="isUserLoggedIn" expression="#{loginAction.isUserLoggedIn}">
> 		<transition name="true" to="page1" />
> 		<transition name="false" to="page2" />
> 	</decision>
> ...
> </pageflow-definition>
> When the flow is started in a SFSB by calling a method definied like:
> @Begin
> public void init() {
> 	...
> 	Pageflow.instance().begin(this.getPageflow());
> }
> The pageflow is not starting properly. There are no errors messages in the logs but the application defined error page is displayed.
> Now, if the previous code is followed by:
> Pageflow.instance().navigate(facesContext, null);
> then the flow starts fine and reach the first page. But then it seems that the flow lost the conversation and it is not possible to access the SFSB that started the conversation anymore.
> I believe a comment about this usecase is made in org.jboss.seam.core.Pageflow in the method:
> public void begin(String pageflowDefinitionName)
> {
>       if ( log.isDebugEnabled() )
>       {
>          log.debug("beginning pageflow: " + pageflowDefinitionName);
>       }
>       
>       processInstance = PageflowHelper.newPageflowInstance( getPageflowProcessDefinition(pageflowDefinitionName) );
>       
>       //if ( Lifecycle.getPhaseId().equals(PhaseId.RENDER_RESPONSE) ) 
>       //{
>     	  //if a pageflow starts during the render response phase
>     	  //(as a result of a @Create method), we know the navigation
>     	  //handler will not get called, so we should force the
>     	  //pageflow out of the start state immediately
>         //TODO: this is not actually completely true, what about <s:actionLink/>
>     	  //pi.signal();
>       //}
>       
>       setDirty();
>       
>       Events.instance().raiseEvent("org.jboss.seam.beginPageflow." + pageflowDefinitionName);
>       
>       storePageflowToViewRootIfNecessary();
> }

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the seam-issues mailing list