Hello Martin,
a  central class in Webflow is  PageFlowRequestCycleProcessor:


public class PageFlowRequestCycleProcessor extends WebRequestCycleProcessor
{

    /** {@inheritDoc} */
    @Override
public IRequestTarget_*resolve*_(RequestCycle requestCycle, RequestParameters requestParameters)
    {
        //If Key in URL use it
if(requestParameters.getParameters().containsKey(PageFlowConstants.FLOW_EXECUTION_KEY))
        {
String[] flowExecutionKeyParms = (String[])requestParameters.getParameters().get(PageFlowConstants.FLOW_EXECUTION_KEY);
            if(flowExecutionKeyParms.length > 0){
return RequestTargetFactory.buildFromState(flowExecutionKeyParms[0], requestCycle, requestParameters);
            }
        }

IRequestTarget target = super.resolve(requestCycle, requestParameters);

// If the target is bookmarkable but mounted it needs to go back and check pageflow
        if (target instanceof BookmarkablePageRequestTarget)
        {
// BookmarkablePageRequestTarget bookmarkableTarget = (BookmarkablePageRequestTarget)target;

// if (PAGE_FLOW_PAGE_CLASS.isAssignableFrom(bookmarkableTarget.getPageClass()) || // PANEL_FLOW_PAGE_CLASS.isAssignableFrom(bookmarkableTarget.getPageClass()))
//            {
String currentStateFromSession = PageFlowSession.get().getFlowState().getCurrentViewState(); return RequestTargetFactory.buildFromState(currentStateFromSession, requestCycle, requestParameters);
//            }
        }

        return target;
    }

    /** {@inheritDoc} */
    @Override
protected IRequestTarget _*resolveHomePageTarget*_(RequestCycle requestCycle, RequestParameters requestParameters)
    {

        //Grab the target as Wicket would normally calculate it
BookmarkablePageRequestTarget classicTarget =(BookmarkablePageRequestTarget) super.resolveHomePageTarget(requestCycle, requestParameters); BookmarkablePageRequestTarget newTarget = resolvePageFlowTargets(classicTarget,requestCycle,requestParameters);

//If the target that PageFlow is returning isn't the real home page we need to redirect to it.
        if(!classicTarget.getPageClass().equals(newTarget.getPageClass())){

//Redirect to the homepage if session is trying to go to the end of the flow since we are restarting it String currentStateFromSession = PageFlowSession.get().getFlowState().getCurrentViewState(); if(PageFlowConstants.PAGE_FLOW_FINAL_STATE_DONE.equals(currentStateFromSession)){
                //Reset the whole flow state in preparation for a new flow
                PageFlowSession.get().resetFlowState();

// This line is to reset the target because the flowstate was just reset so the url needs to be regenerated classicTarget =(BookmarkablePageRequestTarget) super.resolveHomePageTarget(requestCycle, requestParameters);

                return classicTarget;
            }

throw new RestartResponseException(newTarget.getPageClass(), newTarget.getPageParameters());
        }

return resolvePageFlowTargets(classicTarget,requestCycle,requestParameters);
    }

    /** {@inheritDoc} */
    @Override
protected IRequestTarget _*resolveBookmarkablePage*_(RequestCycle requestCycle, RequestParameters requestParameters)
    {
        //Grab the target as Wicket would normally calculate it
BookmarkablePageRequestTarget classicTarget =(BookmarkablePageRequestTarget) super.resolveBookmarkablePage( requestCycle, requestParameters);

return resolvePageFlowTargets(classicTarget,requestCycle,requestParameters);
    }

    /**
     * <p>resolvePageFlowTargets.</p>
     *
* @param classicTarget a {@link org.apache.wicket.request.target.component.BookmarkablePageRequestTarget} object.
     * @param requestCycle a {@link org.apache.wicket.RequestCycle} object.
* @param requestParameters a {@link org.apache.wicket.request.RequestParameters} object. * @return a {@link org.apache.wicket.request.target.component.BookmarkablePageRequestTarget} object.
     */
protected BookmarkablePageRequestTarget _resolvePageFlowTargets_(BookmarkablePageRequestTarget classicTarget, RequestCycle requestCycle, RequestParameters requestParameters)
    {
        BookmarkablePageRequestTarget target = null;

String currentStateFromSession = PageFlowSession.get().getFlowState().getCurrentViewState(); //If the target still hasn't been set, target from the user's session data
        if(currentStateFromSession != null)
        {
target = RequestTargetFactory.buildFromState(currentStateFromSession, requestCycle, requestParameters);
        }

//TODO if the target is null, redirect back to the last rendered page, or the homepage
        if(target == null)
        {
            target = classicTarget;
        }

        return target;
    }
}

For which Mappers should I look in these cases ?

Best regards
Heiner

Am 18.06.2013 11:37, schrieb Piratenvisier:
Thank you Martin.
Now I started another evaluation process after studying spring Webflow and Seam an especially this discussion <http://http://ptrthomas.wordpress.com/2007/03/02/wicket-impressions-moving-from-spring-mvc-webflow/> lets me think more profoundly about the subject.
In cocoon I tried the flow subject with spring apllicationXML files
After some time with growing XML-structures it was rather tedious to find out the reason of a flow problem. In wicket I tried it with HashMap in the Wicketapplication. But the maintenance became also tedious. After the above discussion I think I will try it more with special Components and
and Inheritance.
Best regards
Heiner

Am 16.06.2013 11:36, schrieb Martin Grigorov:
Hi,

Some guys created integration of Wicket 1.4 with Spring WebFlow (
https://github.com/wicketstuff/core/tree/core-1.4.x/jdk-1.5-parent/spring-webflow-parent
).
You may find it interesting and update it to newer versions of both Wicket
and Spring WebFlow.


On Sun, Jun 16, 2013 at 7:34 AM, Piratenvisier
<hansheinrichbr...@yahoo.de>wrote:

Is there any support to structure the flow of pages and forms.
I build for my realestate software structures, defining a state of a page,
the visibility of the links and tabs, the pages a link calls in this state,
  database action to be done and the pageparameters
the link tranfers to the new page.

But maybe there are more intelligent ways to organize this.


------------------------------**------------------------------**---------
To unsubscribe, 
e-mail:users-unsubscribe@wicket.**apache.org<users-unsubscr...@wicket.apache.org>
For additional commands, e-mail:users-h...@wicket.apache.org




Reply via email to