Window manager and per window page flow scope
---------------------------------------------

                 Key: TRINIDAD-1903
                 URL: https://issues.apache.org/jira/browse/TRINIDAD-1903
             Project: MyFaces Trinidad
          Issue Type: New Feature
    Affects Versions: 1.2.14-core 
            Reporter: Michael Kurz
            Priority: Minor


Some time ago Mark Badorrek posted a development request for a 
PageFlowScopeProvider that supports having one page flow scope and one view 
cache for every window /tab of the browser. The original request explaining the 
problem can be found at [1]. Mark has a working solution for this problem that 
supports five hardcoded page flow scopes and view caches (details below). 

What he wants to have is a generic solution that comes as part of Trinidad. 
Blake suggested that this should be done with a window manager implementation. 

I started working on this and provide some very basic code to discuss the 
problems involved.

Details for the existing solution:
-------------------------------------------

Mark's existing solution mainly consists of a custom page flow scope provider 
implementation. This implementation supports a default page flow scope map and 
five additional scope maps with predefined names. The names are supplied via 
request parameters. 

Additionally, they have a custom state manager that also checked the request 
parameters and store a separate view cache for each of the five named windows 
(including a default view cache).

The following scenario demonstrates how this solution is used. If the user 
clicks on a link, a new window using a new page flow scope and view cache is 
opened. The JSP fragment looks like this:

<tr:goLink textAndAccessKey="..." destination="#"
    onclick="window.open( '#{myBackingBean.getURL}', '...'"/>

public class MyBackingBean{
  public void getURL(){
    Map<String, Object> pageFlowScope = ThePageFlowProviderImpl.
        getEmptyPageFlowScopeForRelatedWorkItems();
    // Initialize some stuff and put it in the new page flow scope
    pageFlowScope.put("key", value);
    return "../my/new/frame.jsp?" +  ThePageFlowProviderImpl.
        RELATED_WORK_ITEMS_PAGE_FLOW_SCOPE + "=true";
  }
}

Effectively the URL assigned to the goLink tag becomes : 

../my/new/frame.jsp?relatedworkitems_pageflowscope=true

Once trinidad opens the new window and begins to create the view, it eventually 
starts using the new page flow scope defined by the magic key in the URL 
("relatedworkitems_pageflowscope") to determine which pageflowscope to use.

---

[1]: http://markmail.org/message/ijyve7oj2ik5l57k

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to