[jbossseam-issues] [JBoss JIRA] Commented: (JBSEAM-906) Support redirect component for navigation out of conversational scope

Christian Bauer (JIRA) jira-events at lists.jboss.org
Sat Feb 24 02:27:35 EST 2007


    [ http://jira.jboss.com/jira/browse/JBSEAM-906?page=comments#action_12354182 ] 
            
Christian Bauer commented on JBSEAM-906:
----------------------------------------

Tested, page parameters are not captured:

    <page view-id="/docDisplay.xhtml" action="#{browser.prepare}">
        <param name="nodeId" value="#{browser.nodeId}"/>

        <navigation>
            <rule if-outcome="editDoc">
                <capture-current-view/>
                <begin-conversation flush-mode="MANUAL"/>
                <redirect view-id="/docEdit.xhtml">
                    <param name="docId"         value="#{currentDocument.id}"/>
                    <param name="parentDirId"   value="#{currentDirectory.id}"/>
                </redirect>
            </rule>
    </page>

    <page view-id="/docEdit.xhtml" login-required="true">
        <navigation>
            <rule if-outcome="cancel">
                <end-conversation/>
                <return-to-captured-view/>
            </rule>
        </navigation>
    </page>

Click on EditDoc http://localhost:8080/wiki/docDisplay.seam?nodeId=10&actionOutcome=editDoc&cid=5:

08:16:33,838 DEBUG [Lifecycle] >>> Begin web request
08:16:33,838 DEBUG [Manager] Found conversation id in request parameter: 5
08:16:33,838 DEBUG [Manager] No stored conversation, or concurrent call to the stored conversation
08:16:33,839 DEBUG [AbstractSeamPhaseListener] After restoring conversation context: ConversationContext(6)
08:16:33,849 DEBUG [Manager] Beginning long-running conversation
08:16:33,849 DEBUG [Manager] redirecting to: /wiki/docEdit.seam?docId=10&parentDirId=8&cid=6&clr=true
...

Click on Cancel http://localhost:8080/wiki/docEdit.seam?actionOutcome=cancel&cid=6&clr=true:

08:17:04,362 DEBUG [Lifecycle] >>> Begin web request
08:17:04,362 DEBUG [Manager] Found conversation id in request parameter: 6
08:17:04,363 DEBUG [Manager] Restoring conversation with id: 6
08:17:04,363 DEBUG [AbstractSeamPhaseListener] After restoring conversation context: ConversationContext(6)
08:17:04,364 DEBUG [Manager] Ending long-running conversation
08:17:04,365 DEBUG [Manager] redirecting to: /wiki/docDisplay.seam?cid=6
08:17:04,367 DEBUG [Manager] Storing conversation state: 6
08:17:04,369 DEBUG [Lifecycle] <<< End web request

08:17:04,370 DEBUG [Lifecycle] >>> Begin web request
08:17:04,370 DEBUG [Manager] Found conversation id in request parameter: 6
08:17:04,370 DEBUG [Manager] Restoring conversation with id: 6
08:17:04,370 DEBUG [AbstractSeamPhaseListener] After restoring conversation context: ConversationContext(6)
...

The nodeId is gone.


> Support redirect component for navigation out of conversational scope
> ---------------------------------------------------------------------
>
>                 Key: JBSEAM-906
>                 URL: http://jira.jboss.com/jira/browse/JBSEAM-906
>             Project: JBoss Seam
>          Issue Type: Feature Request
>          Components: Core
>            Reporter: Christian Bauer
>         Assigned To: Gavin King
>            Priority: Minor
>             Fix For: 1.1.8.GA
>
>         Attachments: navigation-patch.diff, ReturnToCapturedViewNavigationHandler.java, ReturnToParentViewNavigationHandler.java
>
>
> It's about my favorite subject, the "history" or "cancel" button.
> Assume the following (RC == Root Conversation, NC == Nested Conversation):
> RC(1) -> NC(2) -> NC(3)
> I can render a Cancel button on each page in NC 2 and 3 with the action=#{conversation.endAndRedirect()} to get back to any parent NC or RC.
> I can not render a Cancel button on each page in RC, because there is no "parent view-id" we could redirect to. So my Cancel button on these pages has to call some logic I've written on my RC backing component.
> I propose to extend the Conversation.endAndRedirect() method with the following logic:
> - If called in a NC, do what it currently does.
> - If called in a RC, check if the 'redirect' component is present in RC, if yes, call 'redirect.execute()'
> If this would be available, I could completely control conversation navigation and the navigation history through nesting conversations (with s:link or pages.xml) and by ensuring that a RC has a prepared 'redirect' component when it is started. All Cancel buttons would be able to use action="#{conversation.endAndRedirect()}" and would either get the user "one up" in the conversation stack or "out" of conversational scope.

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