[ 
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)

Reply via email to