- User viewing a contact page
This view.xhtml page needs a page action, e.g. #{myViewer.rememberThis}. In the
rememberThis() method you can get the "redirect" component from Seam and call
captureCurrentRequest()/captureCurrentView().
- User clicks "Add Note"
This needs to be a call to the "view.xhtml" page, e.g. <s:link
action="addNote"/>. In your pages.xml you can then have a navigation rule
like this:
| <page view-id="/view.xhtml"
action="#{myViewer.rememberThis}">
|
| <navigation>
| <rule if-outcome="addNote">
| <begin-conversation flush-mode="MANUAL"/>
| <redirect view-id="/noteEditor.xhtml"/>
| </rule>
|
The rememberThis() runs again and remembers the "entry point" for your long
running conversation. Which is what <begin-conversation> does, it promotes the
temporary conversation to a long-running conversation. The "redirect" component
is carried on in that same conversation.
- New page and user enters a note
This is a conversational flow, so you stay inside the long running conversation on the
/noteEditor.xhtml screen (during validation errors, etc.)
- User clicks save, note saved and contact page reshown
You can get out of your long running conversation by first ending it, and then redirecting
to the last remembered location in the "redirect" component. This code could be
in your NoteEditor.java bean as the exit code after save (or mapped to the Cancel button
in the UI):
|
| public void exitConversation() {
| Conversation currentConversation = Conversation.instance();
| Redirect redirect = (Redirect)Component.getInstance("redirect");
| currentConversation.end();
| // Have a chance here to modify the redirect.setParameters() for the following
GET, e.g.
| // strip off the action=(addNote) parameter which would lead me into a circle
| redirect.returnToCapturedView();
| }
|
|
Yes, this is not ideal and we are currently working on a better concept that involves
"entry points". Not sure yet how that will exactly look like in code and
pages.xml. You also have the case of nested conversations, where you want to exit to the
last view shown in the parent conversation. Or a root conversation that was started from
another root conversation.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4035386#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...