Moreno Cornaz schrieb:
Hi everybody.

I have two pages P1 and P2 each one associated with 'its own bean', say Bean1 and Bean2, defined in the same conversation. In addition P1 has reference to another bean, say Bean1A that has it's own conversation (all defined through Spring). P2 is opened form P1 as a popup window with the same conversation context as P1. When I open P2, it happens that the Bean1A has been lost and from P1
its values are null.
Why this happens? Bean1A has nothing to do with P2.
I thought that when I open P2 I make a request that doesn't have any reference to Bean1A and than orchestra deletes it, but why this doesn't happen with the bean B1 too?
You must *not* have two windows with the same conversationContext value in the url.

The http protocol gives web servers absolutely no way of knowing which window a request comes from. So when two windows use the same conversationContext value, then window 1 asks for P1 and window 2 asks for P2 this looks to orchestra *exactly* the same as one window first asking for P1 then asking for P2.

So when opening a popup window, always avoid setting the conversationContext in the url for the new window; orchestra will then allocate a new conversationContext for the new window. Yes this means that two windows cannot share conversation-scoped beans but that is a *good* thing.

Orchestra provides the o:separateConversationContext tag that allows outputLink components to be generated without the automatic conversationContext being added. If you are using javascript to pop up the new window then you need to correctly handle the conversationContext param yourself. See the separateConversationContext tag here: http://myfaces.apache.org/orchestra/myfaces-orchestra-core/tlddoc/index.html

The situation is somewhat different for *modal* windows; it does make some kind of sense for modal windows to be able to access *some* of the beans associated with the context. Orchestra is still young so "best practice" is still being invented at the moment, but I think the best way to handle modal popups is to still run the new window in a new conversation-context and to explicitly "copy" beans that need to be shared into the new context. The experimental Orchestra Flow project tries to provide an easy way to do this, but it isn't ready for production use yet.

Regards,
Simon


Reply via email to