[ 
https://issues.apache.org/jira/browse/MYFACES-3886?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13978249#comment-13978249
 ] 

Leonardo Uribe commented on MYFACES-3886:
-----------------------------------------

Well, if primefaces does not assign a client window id to the dialog, there is 
no way that MyFaces can chain the request as a "conversation" or in other 
words, maintain the precedence tree. 

The related algorithm is here:

http://svn.apache.org/repos/asf/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/viewstate/SerializedViewCollection.java

The solution is make an "even more clever" choice of which view should be 
discarded, but I don't have any idea how to do it. If all pages has a windowId, 
the ones without clientId should be discarded first. The easy way is assign a 
windowId to the dialog, after all, that's the expected way to do it. The thing 
is that algorithm should take care of the size of the structure, because that 
is stored into session. You should ask to primefaces guys for this. Or you can 
propose a patch and try to change the algorithm.

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

Reply via email to