[ https://issues.apache.org/jira/browse/MYFACES-3556?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Leonardo Uribe resolved MYFACES-3556. ------------------------------------- Resolution: Fixed Fix Version/s: 2.1.8 2.0.14 > [perf] call markInitialState() inside vdl.retargetAttachedObjects() and > vdl.retargetMethodExpressions() > ------------------------------------------------------------------------------------------------------- > > Key: MYFACES-3556 > URL: https://issues.apache.org/jira/browse/MYFACES-3556 > Project: MyFaces Core > Issue Type: Improvement > Components: JSR-314 > Reporter: Leonardo Uribe > Assignee: Leonardo Uribe > Fix For: 2.0.14, 2.1.8 > > > To ensure compatibility with the RI, In JSF 2.1, markInitialState() call is > done after the component tree is built with a visitTree() call. That works > fine, but in JSF 2.0 or when you have a dynamic content inside a page, it is > necessary to activate markInitialState() call through facelet algorithm as > described in MYFACES-3451. > The concept works very good, but I notice a side effect in > vdl.retargetAttachedObjects() and vdl.retargetMethodExpressions(). Since > markInitialState() call goes from leaf to the root, and these methods > traverse the tree to apply changes in child components, all changes done by > these two methods are stored into the "delta" part of the state. > Since vdl.retargetAttachedObjects() and vdl.retargetMethodExpressions() are > called in build view time and only when the composite component is created, > it is safe to check if pss is used in the view and markInitialState() > algorithm has been activated, to call markInitialState() over the child > components (the call for the top level component is done in the outside). > Maybe it will be some extra calls to markInitialState() for the same > component, but it is worth to do it, because this call is very fast, and the > effect is get a zero (or almost zero) state size overhead for composite > components. > Additionally, it is better in this case to use these classes: > org.apache.myfaces.view.facelets.tag.jsf.PartialMethodExpressionActionListener; > org.apache.myfaces.view.facelets.tag.jsf.PartialMethodExpressionValidator; > org.apache.myfaces.view.facelets.tag.jsf.PartialMethodExpressionValueChangeListener; > to ensure no state is stored in these cases. Note this issue is the solution > to the problem described in MYFACES-3551 -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira