Pavitra Subramaniam created TRINIDAD-2402:
---------------------------------------------

             Summary: mechanism to setup a new component binding context
                 Key: TRINIDAD-2402
                 URL: https://issues.apache.org/jira/browse/TRINIDAD-2402
             Project: MyFaces Trinidad
          Issue Type: Improvement
    Affects Versions: 2.0.1-core
            Reporter: Pavitra Subramaniam


There are usecases where a custom tag that provides the ability to load dynamic 
layouts (or page fragments) based on app flow, requiring that new components be 
re-created when the tag is executed and a new layout different from the current 
one needs to be loaded. 

Merely deleting the component sub-trees in the tag handler does not entirely 
address the issue because when the tag is re-executed today, if a binding EL is 
set on the component, then the component instance held by the backing bean 
instance (typically a reuqest scoped bean) get reused instead of a new 
component being created.

In order to force create the component instance, this new API will allow tag 
handlers to notify the framework by starting a new "component binding context". 
Between a pair of push and pop calls, component bindings will be cleared 
allowing for new component instances to be created and pushed to the backing 
bean.


  /**
   * Starts a new component binding context. Typically called from tag handlers 
when component 
   * bindings in its subtree needs to be cleared, forcing the creation of new 
components. 
   * 
   * @param context FacesContext instance
   * @see RequestContext#popComponentBindingContext
   * @see RequestContext#isInComponentBindingContext
   */
  public static void pushComponentBindingContext(FacesContext context)  
  {
  }

  /**
   * Pops out of the last pushed component binding context. Component binding 
instances will not be 
   * cleared after popping out the outermost context.
   * 
   * @param context FacesContext instance
   * @see RequestContext#pushComponentBindingContext
   * @see RequestContext#isInComponentBindingContext
   */
  public static void popComponentBindingContext(FacesContext context)
  {
  }

  /**
   * Returns true if we are currently within a component binding context.
   * 
   * @see RequestContext#pushComponentBindingContext
   * @see RequestContext#popComponentBindingContext
   */
  public static boolean isInComponentBindingContext(FacesContext context)
  {
  }




--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to