public static PageFlowStack get( HttpServletRequest request, ServletContext servletContext, boolean createIfNotExist )
    {
        StorageHandler sh = Handlers.get( servletContext ).getStorageHandler();
        HttpServletRequest unwrappedRequest = PageFlowUtils.unwrapMultipart( request );
        RequestContext rc = new RequestContext( unwrappedRequest, null );
        String attrName = ScopedServletUtils.getScopedSessionAttrName( JPF_STACK_ATTR, unwrappedRequest );
        PageFlowStack jpfStack = ( PageFlowStack ) sh.getAttribute( rc, attrName );
        
        if ( jpfStack == null && createIfNotExist )
        {
            jpfStack = new PageFlowStack( servletContext );
            jpfStack.save( request );
        }
        else if ( jpfStack != null )
        {
            jpfStack.setServletContext( servletContext );
        }
        
        return jpfStack;
    }
public static PageFlowStack get ( HttpServletRequest request , ServletContext servletContext , boolean createIfNotExist ) { StorageHandler sh = Handlers . get ( servletContext ) . getStorageHandler ( ) ; HttpServletRequest unwrappedRequest = PageFlowUtils . unwrapMultipart ( request ) ; RequestContext rc = new RequestContext ( unwrappedRequest , null ) ; String attrName = ScopedServletUtils . getScopedSessionAttrName ( JPF_STACK_ATTR , unwrappedRequest ) ; PageFlowStack jpfStack = ( PageFlowStack ) sh . getAttribute ( rc , attrName ) ; if ( jpfStack == null && createIfNotExist ) { jpfStack = new PageFlowStack ( servletContext ) ; jpfStack . save ( request ) ; } else if ( jpfStack != null ) { jpfStack . setServletContext ( servletContext ) ; } return jpfStack ; }
Get the stack of nested page flows for the current user session.  Create and store an empty
stack if none exists.

@param request the current HttpServletRequest.
@param servletContext the current ServletContext.
@return a {@link PageFlowStack} of nested page flows ({@link PageFlowController}s) for the current user session.