[
https://issues.apache.org/jira/browse/MYFACES-3886?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13978313#comment-13978313
]
Adam Balazs commented on MYFACES-3886:
--------------------------------------
I think that is the expected behavior from PF to assign new windowID to every
opened dialog.
As a fix, I suggest to modify the SerializedViewCollection.java class at the
line 87 as the followings:
Replace this:
if (_serializedViews.containsKey(key))
{
// Update the state, the viewScopeId does not change.
_serializedViews.put(key, state);
return;
}
By this:
if (_serializedViews.containsKey(key))
{
// Update the state, the viewScopeId does not change.
_serializedViews.put(key, state);
_keys.remove(key);
_keys.add(key);
return;
}
This way the view will be at the end of the list, and the _keys will hold the
views in 'touching' order. So the _keys[0] will be the oldest view which has
not been modified.
Patch attached.
> SerializedViewCollection does not update it's _keys list when
> _serializedViews contains key
> -------------------------------------------------------------------------------------------
>
> Key: MYFACES-3886
> URL: https://issues.apache.org/jira/browse/MYFACES-3886
> Project: MyFaces Core
> Issue Type: Bug
> Components: General
> Affects Versions: 2.2.2
> Environment: PrimeFaces 4.0.12.
> Reporter: Adam Balazs
> Attachments: SerializedViewCollection.java.patch
>
>
> When I use DialogFramework (of PrimeFaces), it's adds a new view to the
> session every time. The problem is that when I post an AJAX request to the
> original view, the _keys list is not updated, only the view get updated in
> the _serializedViews map.
> After I reach the limit defined with the
> org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION context-param, MyFaces gets the
> first element in the _keys list (which is the container view) - assuming that
> this is the oldest view in the session - and remove the corresponding view
> from the _serializedViews map by the key. But clearly it is not, as I already
> posted some AJAX requests to it.
> I think the optimal behavior would be the following: when a view gets an ajax
> request the code should remove the the key from the _keys list and than add
> it as a last element.
> The related class is
> org.apache.myfaces.application.viewstate.SerializedViewCollection at the if
> condition started at line 87.
> My question is if it is an intended behavior or if it's a bug.
--
This message was sent by Atlassian JIRA
(v6.2#6252)