That sounds pretty much like the Seam Conversation scope, although much
narrower and more focused on a particular use case. You can use the same
examples and put it in Conversation scope - and then handle conversation
propagation independently in your navigation rules.
We have a quite complete model and the machinery for all of this already, what
we need in Seam is the notion of entry points of conversations and the ability
to return to that entry point at the end of a conversation or for a particular
outcome during the conversation.
Right now there are several disjunct facilities in Seam for this (the Redirect
component covers half of these cases, Conversation.redirect() can return you to
the last view of the parent conversation from a nested conversation) that need
to be unified, extended, and tied into the metadata.
So right now I do the polymorphic "exit a conversation correctly, no matter if
it's nested or a root conversation" manually:
| public void exitConversation(Boolean endBeforeRedirect) {
| Conversation currentConversation = Conversation.instance();
| if (currentConversation.isNested()) {
| // End this nested conversation and return to last rendered
view-id of parent
| currentConversation.endAndRedirect(endBeforeRedirect);
| } else {
| // Always end this conversation
| currentConversation.end();
|
| ConversationEntry entryPoint =
|
(ConversationEntry)Contexts.getConversationContext().get("conversationEntryPoint");
| if (entryPoint != null) {
| // We came here from another conversation
| if (entryPoint.isDisplayable()) {
| entryPoint.switchConversation();
| } else {
| // The entry point is gone... What now? Go to start
page...
| Manager.instance().redirect("/display.xhtml", new
HashMap<String,Object>(), true);
| }
| } else {
| // We came here from a non-conversational page
| if (endBeforeRedirect)
| redirectToLastBrowsedPage();
| else
| redirectToLastBrowsedPageWithConversation();
| }
| }
| }
|
I have to remember my entry points manually and return to them, see
"conversationEntryPoint" and the mysterious redirectTo*() methods that do what
I described earlier.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4035408#4035408
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4035408
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user