[jboss-user] [JBoss Seam] - About pageflow

rlhr do-not-reply at jboss.com
Thu Jan 4 10:02:28 EST 2007


Hello,

I ran into some trouble trying to start properly a pageflow.

First of all, let me explain the situation. I'm using JBoss 4.0.4GA with Seam 1.1.0GA

I have a SFSB that is responsible for choosing a flow and start it.


  | @Begin
  | public void init() {
  | 	...
  | 	Pageflow.instance().begin(this.getPageflow());
  | }
  | 

The pageflow is defined as followed:


  | <?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>
  | 

The flow is started in the RENDER_RESPONSE phase, so I can't use <start-state>
The issue I had is that the flow didn't start properly (I was redirected to an error page) but could not see anything wrong in the logs.

So I looked into the code, more exactly at the begin method of Pageflow.java.


  | 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();
  | 
  | }
  | 

There is a comment about what I believe is my case. I then solved the problem by adding the following line at the end of the SFSB init method:


  | Pageflow.instance().navigate(facesContext, null);
  | 

Now everything is fine but I believe this should be fixed in Seam. It seems to me that you guys know about it already, so any plan yet?

Regards,

Richard

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3997933#3997933

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3997933



More information about the jboss-user mailing list