[ https://issues.apache.org/jira/browse/MYFACES-4036?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15177251#comment-15177251 ]
Leonardo Uribe commented on MYFACES-4036: ----------------------------------------- The whole point of Partial State Saving is to save the delta instead the full state. I suppose this is a problem of the portlet bridge, which is not doing the saveState/restoreState correctly. I think if you disable PSS it will work. In other words, what I mean is call processSaveState() and then use the result to restore the view will not work. When vdl.buildView is called to build the initial state, UIData.markInitialState() is called and _initialDescendantFullComponentState is filled. This is done by facelets but if the algorithm build the component tree using something else it will miss that step. In other words, if _initialDescendantFullComponentState is not filled, there is something wrong in the way the view is restored but that's probably something that needs to be fixed by the portlet bridge. PSS algorithm relies on markInitialState() calls to isolate the initial state from the delta state. But if the algorithm does not call markInitialState() at the right time, the algorithm won't work. _initialDescendantFullComponentState is not part of the state, it is considered something more related to the structure. It should not be saved with the state, because it is supposed to be calculated when markInitialState() is called, and that code should be called every time the initial state is built or calculated. > UIData state is not restorable when rowStatePreserved is set to true > -------------------------------------------------------------------- > > Key: MYFACES-4036 > URL: https://issues.apache.org/jira/browse/MYFACES-4036 > Project: MyFaces Core > Issue Type: Bug > Affects Versions: 2.2.10-SNAPSHOT > Environment: WebSphere Liberty 8.5.5.8, MyFaces 2.2.8, IBM JSF > Portlet Bridge 1.0 > Reporter: Hank Ibell > Priority: Minor > > A JSF portlet with input fields inside a h:dataTable component will lose > their local values if validation fails, even when rowStatePreserved is set to > true. > The IBM JSF portlet bridge calls processSaveState() on UIViewRoot so that the > bridge can restore the view state on their RENDER request. After looking at > UIData, it looks like _initialDescendantFullComponentState is lost between > Portal's ACTION and RENDER requests (a new UIData object is created on the > RENDER request). Unfortunately, UIData's _rowDeltaStates will not be restored > without its initial state. > It looks like UIData should also save/restore > _initialDescendantFullComponentState in its saveSate()/restoreState() methods > since it may be needed to restore _rowDeltaStates. -- This message was sent by Atlassian JIRA (v6.3.4#6332)